/*
 * Copyright Codeplay Software Ltd.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use these files except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

// DO NOT MODIFY BY HAND
// This file was automatically generated by generate_pooling_tests.py.
// Results calculated using Tensorflow v1.12.0.

#include <gtest/gtest.h>

#include "sycldnn/padding_mode.h"

#include "sycldnn/pooling/operators.h"

#include "test/types/cartesian_product.h"
#include "test/types/kernel_data_types.h"
#include "test/types/test_backend_types.h"
#include "test/types/to_gtest_types.h"

#include "test/pooling/pooling_fixture.h"

#include <array>
#include <vector>

using namespace sycldnn;  // NOLINT(google-build-using-namespace)
using DataTypeList = sycldnn::types::KernelDataTypes;
using Backends = sycldnn::types::DefaultBackendTypes;

using SNNTypePairs =
    sycldnn::types::CartesianProduct<DataTypeList, Backends>::type;
using GTestTypePairs = sycldnn::types::ToGTestTypes<SNNTypePairs>::type;

template <typename Pair>
using MaxWindow11Stride4Grad =
    PoolingFixture<typename Pair::FirstType, typename Pair::SecondType,
                   pooling::Max, pooling::Backpropagate>;
TYPED_TEST_SUITE(MaxWindow11Stride4Grad, GTestTypePairs);
TYPED_TEST(MaxWindow11Stride4Grad, SAME1x15x15x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0.,  0., 0.,  0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0., 0.,  0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0., 0.,  0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0., 0.,  0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0., 0.,  0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0., 0.,  0., 0.,  0., 1., 0., 0., 0., 2., 0., 0., 0., 7., 0., 0., 0.,
      0.,  0., 0.,  0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0., 0.,  0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0., 0.,  0., 0.,  0., 0., 0., 0., 0., 0., 0., 5., 0., 0., 0., 6., 0.,
      0.,  0., 15., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0., 0.,  0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0., 0.,  0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      22., 0., 0.,  0., 24., 0., 0., 0., 54.};
  const std::array<int, 4> in_shape = {{1, 15, 15, 1}};
  const auto padding = PaddingMode::SAME;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, VALID1x15x15x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0.,
      0., 0., 2., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 3., 0., 0., 0., 4.};
  const std::array<int, 4> in_shape = {{1, 15, 15, 1}};
  const auto padding = PaddingMode::VALID;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, SAME1x15x15x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0.,   0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      0.,   0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      0.,   0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      0.,   0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      0.,   0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      0.,   0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      0.,   0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      0.,   0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      0.,   0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      0.,   0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      0.,   0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      0.,   0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      1.,   2.,  0., 0., 0., 0., 0., 0., 3.,  4.,  0., 0., 0., 0., 0., 0.,
      12.,  14., 0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      0.,   0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      0.,   0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      0.,   0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      0.,   0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      0.,   0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      0.,   0.,  0., 0., 0., 0., 0., 0., 9.,  10., 0., 0., 0., 0., 0., 0.,
      11.,  12., 0., 0., 0., 0., 0., 0., 28., 30., 0., 0., 0., 0., 0., 0.,
      0.,   0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      0.,   0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      0.,   0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      0.,   0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      0.,   0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      0.,   0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      42.,  44., 0., 0., 0., 0., 0., 0., 46., 48., 0., 0., 0., 0., 0., 0.,
      104., 108.};
  const std::array<int, 4> in_shape = {{1, 15, 15, 2}};
  const auto padding = PaddingMode::SAME;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, VALID1x15x15x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 2., 0., 0.,
      0., 0., 0., 0., 3., 4., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 5., 6., 0., 0., 0., 0., 0., 0., 7., 8.};
  const std::array<int, 4> in_shape = {{1, 15, 15, 2}};
  const auto padding = PaddingMode::VALID;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, SAME1x15x15x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0.,   0.,   0.,   0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,   0.,   0.,   0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,   0.,   0.,   0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,   0.,   0.,   0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,   0.,   0.,   0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,   0.,   0.,   0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,   0.,   0.,   0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,   0.,   0.,   0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,   0.,   0.,   0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,   0.,   0.,   0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,   0.,   0.,   0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,   0.,   0.,   0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,   0.,   0.,   0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,   0.,   0.,   0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,   0.,   0.,   0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,   0.,   0.,   0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,   0.,   0.,   0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,   0.,   0.,   0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,   0.,   0.,   0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,   0.,   0.,   0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,   0.,   0.,   0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,   0.,   0.,   0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,   0.,   0.,   0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,   0.,   0.,   0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      1.,   2.,   3.,   4.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      5.,   6.,   7.,   8.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      22.,  24.,  26.,  28., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,   0.,   0.,   0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,   0.,   0.,   0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,   0.,   0.,   0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,   0.,   0.,   0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,   0.,   0.,   0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,   0.,   0.,   0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,   0.,   0.,   0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,   0.,   0.,   0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,   0.,   0.,   0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,   0.,   0.,   0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,   0.,   0.,   0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,   0.,   0.,   0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      17.,  18.,  19.,  20., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      21.,  22.,  23.,  24., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      54.,  56.,  58.,  60., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,   0.,   0.,   0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,   0.,   0.,   0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,   0.,   0.,   0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,   0.,   0.,   0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,   0.,   0.,   0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,   0.,   0.,   0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,   0.,   0.,   0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,   0.,   0.,   0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,   0.,   0.,   0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,   0.,   0.,   0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,   0.,   0.,   0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,   0.,   0.,   0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      82.,  84.,  86.,  88., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      90.,  92.,  94.,  96., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      204., 208., 212., 216.};
  const std::array<int, 4> in_shape = {{1, 15, 15, 4}};
  const auto padding = PaddingMode::SAME;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, VALID1x15x15x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 2.,  3.,  4.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 5., 6., 7.,  8.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  9.,  10., 11., 12.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 13., 14., 15., 16.};
  const std::array<int, 4> in_shape = {{1, 15, 15, 4}};
  const auto padding = PaddingMode::VALID;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, SAME1x15x16x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0.,  0., 0.,
      0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0.,  0., 0.,
      0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0.,  0., 0.,
      0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0.,  0., 0.,
      0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0.,  0., 0.,
      0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.,  0., 0.,  0., 2.,
      0., 0.,  0., 7., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0.,  0., 0.,
      0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0.,  0., 0.,
      0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0.,  0., 0.,
      0., 0.,  0., 0., 0., 5., 0., 0., 0., 6., 0., 0., 0., 15., 0., 0.,  0., 0.,
      0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0.,  0., 0.,
      0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0.,  0., 0.,
      0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 22., 0., 0.,
      0., 24., 0., 0., 0., 54.};
  const std::array<int, 4> in_shape = {{1, 15, 16, 1}};
  const auto padding = PaddingMode::SAME;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, VALID1x15x16x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 2., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      3., 0., 0., 0., 4., 0.};
  const std::array<int, 4> in_shape = {{1, 15, 16, 1}};
  const auto padding = PaddingMode::VALID;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, SAME1x15x16x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 1.,   2.,
      0., 0., 0., 0., 0., 0., 3.,  4.,  0., 0., 0., 0., 0., 0., 12.,  14.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 9.,   10.,
      0., 0., 0., 0., 0., 0., 11., 12., 0., 0., 0., 0., 0., 0., 28.,  30.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 42.,  44.,
      0., 0., 0., 0., 0., 0., 46., 48., 0., 0., 0., 0., 0., 0., 104., 108.};
  const std::array<int, 4> in_shape = {{1, 15, 16, 2}};
  const auto padding = PaddingMode::SAME;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, VALID1x15x16x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 2.,
      0., 0., 0., 0., 0., 0., 3., 4., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      5., 6., 0., 0., 0., 0., 0., 0., 7., 8., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 15, 16, 2}};
  const auto padding = PaddingMode::VALID;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, SAME1x15x16x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.,   2.,   3.,   4.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 5.,   6.,   7.,   8.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 22.,  24.,  26.,  28.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 17.,  18.,  19.,  20.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 21.,  22.,  23.,  24.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 54.,  56.,  58.,  60.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 82.,  84.,  86.,  88.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 90.,  92.,  94.,  96.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 204., 208., 212., 216.};
  const std::array<int, 4> in_shape = {{1, 15, 16, 4}};
  const auto padding = PaddingMode::SAME;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, VALID1x15x16x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      1.,  2.,  3.,  4.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 5.,
      6.,  7.,  8.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  9.,  10., 11., 12., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      13., 14., 15., 16., 0.,  0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 15, 16, 4}};
  const auto padding = PaddingMode::VALID;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, SAME1x15x18x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,  0.,  0., 0., 0., 0., 0.,
      0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,  0.,  0., 0., 0., 0., 0.,
      0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,  0.,  0., 0., 0., 0., 0.,
      0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,  0.,  0., 0., 0., 0., 0.,
      0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,  0.,  0., 0., 0., 0., 0.,
      0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,  0.,  0., 0., 0., 0., 0.,
      0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,  0.,  1., 0., 0., 0., 2.,
      0., 0., 0., 3.,  0., 0., 9., 0.,  0., 0., 0.,  0.,  0., 0., 0., 0., 0.,
      0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,  0.,  0., 0., 0., 0., 0.,
      0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,  0.,  0., 0., 0., 0., 0.,
      0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,  0.,  0., 0., 0., 0., 6.,
      0., 0., 0., 7.,  0., 0., 0., 8.,  0., 0., 19., 0.,  0., 0., 0., 0., 0.,
      0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,  0.,  0., 0., 0., 0., 0.,
      0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,  0.,  0., 0., 0., 0., 0.,
      0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,  0.,  0., 0., 0., 0., 0.,
      0., 0., 0., 27., 0., 0., 0., 29., 0., 0., 0.,  31., 0., 0., 68.};
  const std::array<int, 4> in_shape = {{1, 15, 18, 1}};
  const auto padding = PaddingMode::SAME;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, VALID1x15x18x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 2., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 3., 0., 0., 0., 4., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 15, 18, 1}};
  const auto padding = PaddingMode::VALID;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, SAME1x15x18x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0.,   0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0.,   0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0.,   0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0.,   0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0.,   0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0.,   0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0.,   0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0.,   0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0.,   0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0.,   0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0.,   0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0.,   0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0.,   0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0.,   0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 1.,  2.,  0., 0., 0., 0., 0.,   0.,  3.,  4.,  0., 0.,
      0., 0., 0., 0., 5.,  6.,  0., 0., 0., 0., 16.,  18., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0.,   0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0.,   0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0.,   0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0.,   0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0.,   0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0.,   0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0.,   0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 11., 12., 0., 0., 0., 0., 0.,   0.,  13., 14., 0., 0.,
      0., 0., 0., 0., 15., 16., 0., 0., 0., 0., 36.,  38., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0.,   0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0.,   0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0.,   0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0.,   0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0.,   0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0.,   0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0.,   0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 52., 54., 0., 0., 0., 0., 0.,   0.,  56., 58., 0., 0.,
      0., 0., 0., 0., 60., 62., 0., 0., 0., 0., 132., 136.};
  const std::array<int, 4> in_shape = {{1, 15, 18, 2}};
  const auto padding = PaddingMode::SAME;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, VALID1x15x18x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 1., 2., 0., 0., 0., 0., 0., 0., 3., 4., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 5., 6., 0., 0., 0., 0., 0., 0., 7., 8., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 15, 18, 2}};
  const auto padding = PaddingMode::VALID;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, SAME1x15x18x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0.,   0.,   0., 0.,  0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0., 0.,  0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0., 0.,  0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0., 0.,  0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0., 0.,  0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0., 0.,  0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0., 0.,  0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0., 0.,  0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0., 0.,  0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0., 0.,  0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0., 0.,  0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0., 0.,  0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0., 0.,  0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0., 0.,  0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0., 0.,  0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0., 0.,  0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0., 0.,  0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0., 0.,  0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0., 0.,  0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0., 0.,  0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0., 0.,  0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0., 0.,  0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0., 0.,  0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0., 0.,  0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0., 0.,  0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0., 0.,  0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0., 0.,  0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0., 0.,  0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0., 0.,  0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0., 0.,  0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0., 0.,  0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0., 0.,  0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0., 0.,  0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0., 0.,  0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0., 0.,  0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   1.,   2., 3.,  4.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0., 0.,  5.,  6.,   7.,   8.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0., 0.,  0.,  0.,   0.,   9.,   10.,  11.,  12.,  0.,   0.,
      0.,   0.,   0., 0.,  0.,  0.,   30.,  32.,  34.,  36.,  0.,   0.,   0.,
      0.,   0.,   0., 0.,  0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0., 0.,  0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0., 0.,  0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0., 0.,  0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0., 0.,  0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0., 0.,  0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0., 0.,  0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0., 0.,  0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0., 0.,  0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0., 0.,  0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0., 0.,  0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0., 0.,  0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0., 0.,  0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0., 0.,  0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0., 0.,  0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0., 0.,  0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0., 0.,  0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0., 0.,  0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0., 21., 22., 23.,  24.,  0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0., 0.,  0.,  0.,   25.,  26.,  27.,  28.,  0.,   0.,   0.,
      0.,   0.,   0., 0.,  0.,  0.,   0.,   0.,   0.,   29.,  30.,  31.,  32.,
      0.,   0.,   0., 0.,  0.,  0.,   0.,   0.,   70.,  72.,  74.,  76.,  0.,
      0.,   0.,   0., 0.,  0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0., 0.,  0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0., 0.,  0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0., 0.,  0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0., 0.,  0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0., 0.,  0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0., 0.,  0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0., 0.,  0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0., 0.,  0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0., 0.,  0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0., 0.,  0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0., 0.,  0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0., 0.,  0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0., 0.,  0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0., 0.,  0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0., 0.,  0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0., 0.,  0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0., 0.,  0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0., 0.,  0.,  102., 104., 106., 108., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0.,  0.,  0.,   0.,   0.,   110., 112., 114., 116., 0.,
      0.,   0.,   0., 0.,  0.,  0.,   0.,   0.,   0.,   0.,   0.,   118., 120.,
      122., 124., 0., 0.,  0.,  0.,   0.,   0.,   0.,   0.,   260., 264., 268.,
      272.};
  const std::array<int, 4> in_shape = {{1, 15, 18, 4}};
  const auto padding = PaddingMode::SAME;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, VALID1x15x18x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  1.,  2.,  3.,  4., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  5.,  6.,  7.,  8.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  9.,  10., 11., 12., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 13., 14., 15., 16., 0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 15, 18, 4}};
  const auto padding = PaddingMode::VALID;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, SAME1x16x15x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0.,
      0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0.,
      0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0.,
      0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0.,
      0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0.,
      0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0.,
      0., 0.,  0., 1., 0., 0., 0., 2., 0., 0., 0., 7., 0., 0., 0., 0.,  0., 0.,
      0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0.,
      0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0.,
      0., 0.,  0., 0., 0., 0., 0., 0., 0., 5., 0., 0., 0., 6., 0., 0.,  0., 15.,
      0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0.,
      0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0.,
      0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 22., 0., 0.,
      0., 24., 0., 0., 0., 54.};
  const std::array<int, 4> in_shape = {{1, 16, 15, 1}};
  const auto padding = PaddingMode::SAME;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, VALID1x16x15x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0.,
      0., 0., 2., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 3., 0., 0., 0., 4., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 16, 15, 1}};
  const auto padding = PaddingMode::VALID;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, SAME1x16x15x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 1.,   2.,
      0., 0., 0., 0., 0., 0., 3.,  4.,  0., 0., 0., 0., 0., 0., 12.,  14.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 9.,  10., 0., 0., 0., 0., 0., 0., 11.,  12.,
      0., 0., 0., 0., 0., 0., 28., 30., 0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 42.,  44.,
      0., 0., 0., 0., 0., 0., 46., 48., 0., 0., 0., 0., 0., 0., 104., 108.};
  const std::array<int, 4> in_shape = {{1, 16, 15, 2}};
  const auto padding = PaddingMode::SAME;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, VALID1x16x15x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 2., 0., 0.,
      0., 0., 0., 0., 3., 4., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 5., 6., 0., 0., 0., 0., 0., 0., 7., 8.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 16, 15, 2}};
  const auto padding = PaddingMode::VALID;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, SAME1x16x15x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.,   2.,   3.,   4.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 5.,   6.,   7.,   8.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 22.,  24.,  26.,  28.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 17.,  18.,  19.,  20.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 21.,  22.,  23.,  24.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 54.,  56.,  58.,  60.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 82.,  84.,  86.,  88.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 90.,  92.,  94.,  96.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 204., 208., 212., 216.};
  const std::array<int, 4> in_shape = {{1, 16, 15, 4}};
  const auto padding = PaddingMode::SAME;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, VALID1x16x15x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 2.,  3.,  4.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 5., 6., 7.,  8.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  9.,  10., 11., 12.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 13., 14., 15., 16., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 16, 15, 4}};
  const auto padding = PaddingMode::VALID;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, SAME1x16x16x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.,  0., 0.,  0., 2., 0., 0.,
      0., 7., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 5., 0., 0., 0., 6., 0., 0., 0., 15., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 22., 0., 0., 0., 24.,
      0., 0., 0., 54.};
  const std::array<int, 4> in_shape = {{1, 16, 16, 1}};
  const auto padding = PaddingMode::SAME;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, VALID1x16x16x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 2., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      3., 0., 0., 0., 4., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 16, 16, 1}};
  const auto padding = PaddingMode::VALID;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, SAME1x16x16x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 1.,   2.,
      0., 0., 0., 0., 0., 0., 3.,  4.,  0., 0., 0., 0., 0., 0., 12.,  14.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 9.,   10.,
      0., 0., 0., 0., 0., 0., 11., 12., 0., 0., 0., 0., 0., 0., 28.,  30.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 42.,  44.,
      0., 0., 0., 0., 0., 0., 46., 48., 0., 0., 0., 0., 0., 0., 104., 108.};
  const std::array<int, 4> in_shape = {{1, 16, 16, 2}};
  const auto padding = PaddingMode::SAME;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, VALID1x16x16x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 2.,
      0., 0., 0., 0., 0., 0., 3., 4., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      5., 6., 0., 0., 0., 0., 0., 0., 7., 8., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 16, 16, 2}};
  const auto padding = PaddingMode::VALID;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, SAME1x16x16x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.,   2.,   3.,   4.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 5.,   6.,   7.,   8.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 22.,  24.,  26.,  28.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 17.,  18.,  19.,  20.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 21.,  22.,  23.,  24.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 54.,  56.,  58.,  60.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 82.,  84.,  86.,  88.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 90.,  92.,  94.,  96.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 204., 208., 212., 216.};
  const std::array<int, 4> in_shape = {{1, 16, 16, 4}};
  const auto padding = PaddingMode::SAME;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, VALID1x16x16x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      1.,  2.,  3.,  4.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 5.,
      6.,  7.,  8.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  9.,  10., 11., 12., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      13., 14., 15., 16., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.};
  const std::array<int, 4> in_shape = {{1, 16, 16, 4}};
  const auto padding = PaddingMode::VALID;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, SAME1x16x18x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,  0.,  1., 0., 0., 0.,
      2., 0., 0., 0., 3.,  0., 0., 9., 0.,  0., 0., 0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,  0.,  0., 0., 0., 0.,
      6., 0., 0., 0., 7.,  0., 0., 0., 8.,  0., 0., 19., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 27., 0., 0., 0., 29., 0., 0., 0.,  31., 0., 0., 68.};
  const std::array<int, 4> in_shape = {{1, 16, 18, 1}};
  const auto padding = PaddingMode::SAME;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, VALID1x16x18x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 2., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 3., 0., 0., 0., 4., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 16, 18, 1}};
  const auto padding = PaddingMode::VALID;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, SAME1x16x18x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0.,   0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0.,   0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0.,   0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0.,   0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0.,   0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0.,   0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0.,   0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0.,   0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0.,   0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0.,   0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0.,   0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0.,   0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0.,   0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0.,   0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0.,   0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0.,   0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 1.,  2.,  0., 0., 0., 0., 0.,   0.,
      3.,  4.,  0., 0., 0., 0., 0., 0., 5.,  6.,  0., 0., 0., 0., 16.,  18.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0.,   0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0.,   0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0.,   0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0.,   0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0.,   0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0.,   0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0.,   0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 11., 12., 0., 0., 0., 0., 0.,   0.,
      13., 14., 0., 0., 0., 0., 0., 0., 15., 16., 0., 0., 0., 0., 36.,  38.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0.,   0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0.,   0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0.,   0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0.,   0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0.,   0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0.,   0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0.,   0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 52., 54., 0., 0., 0., 0., 0.,   0.,
      56., 58., 0., 0., 0., 0., 0., 0., 60., 62., 0., 0., 0., 0., 132., 136.};
  const std::array<int, 4> in_shape = {{1, 16, 18, 2}};
  const auto padding = PaddingMode::SAME;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, VALID1x16x18x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 1., 2., 0., 0., 0., 0., 0., 0., 3., 4., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 5., 6., 0., 0., 0., 0., 0., 0., 7., 8., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 16, 18, 2}};
  const auto padding = PaddingMode::VALID;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, SAME1x16x18x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,  0.,  0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,  0.,  0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,  0.,  0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,  0.,  0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,  0.,  0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,  0.,  0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,  0.,  0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,  0.,  0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,  0.,  0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,  0.,  0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,  0.,  0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,  0.,  0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,  0.,  0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,  0.,  0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,  0.,  0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,  0.,  0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,  0.,  0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,  0.,  0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,  0.,  0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,  0.,  0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,  0.,  0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,  0.,  0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,  0.,  0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,  0.,  0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,  0.,  0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,  0.,  0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,  0.,  0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,  0.,  0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,  0.,  0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,  0.,  0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,  0.,  0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,  0.,  0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,  0.,  0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,  0.,  0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,  0.,  0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,  0.,  0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,  0.,  0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,  0.,  0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,  0.,  0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,  0.,  0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   1.,   2., 3.,  4.,  0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,  5.,  6.,
      7.,   8.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,  0.,  0.,
      0.,   9.,   10.,  11.,  12.,  0.,   0.,   0.,   0.,   0., 0.,  0.,  0.,
      30.,  32.,  34.,  36.,  0.,   0.,   0.,   0.,   0.,   0., 0.,  0.,  0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,  0.,  0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,  0.,  0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,  0.,  0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,  0.,  0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,  0.,  0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,  0.,  0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,  0.,  0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,  0.,  0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,  0.,  0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,  0.,  0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,  0.,  0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,  0.,  0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,  0.,  0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,  0.,  0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,  0.,  0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,  0.,  0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,  0.,  0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 21., 22., 23.,
      24.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,  0.,  0.,
      25.,  26.,  27.,  28.,  0.,   0.,   0.,   0.,   0.,   0., 0.,  0.,  0.,
      0.,   0.,   0.,   29.,  30.,  31.,  32.,  0.,   0.,   0., 0.,  0.,  0.,
      0.,   0.,   70.,  72.,  74.,  76.,  0.,   0.,   0.,   0., 0.,  0.,  0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,  0.,  0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,  0.,  0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,  0.,  0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,  0.,  0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,  0.,  0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,  0.,  0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,  0.,  0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,  0.,  0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,  0.,  0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,  0.,  0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,  0.,  0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,  0.,  0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,  0.,  0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,  0.,  0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,  0.,  0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,  0.,  0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,  0.,  0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,  0.,  102.,
      104., 106., 108., 0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,  0.,  0.,
      0.,   0.,   110., 112., 114., 116., 0.,   0.,   0.,   0., 0.,  0.,  0.,
      0.,   0.,   0.,   0.,   0.,   118., 120., 122., 124., 0., 0.,  0.,  0.,
      0.,   0.,   0.,   0.,   260., 264., 268., 272.};
  const std::array<int, 4> in_shape = {{1, 16, 18, 4}};
  const auto padding = PaddingMode::SAME;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, VALID1x16x18x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  1.,  2.,  3.,  4., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  5.,  6.,  7.,  8.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  9.,  10., 11., 12., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 13., 14., 15., 16., 0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.};
  const std::array<int, 4> in_shape = {{1, 16, 18, 4}};
  const auto padding = PaddingMode::VALID;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, SAME1x18x15x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0., 0., 0., 0.,  0., 0., 0.,  0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0.,
      0., 0., 0., 0.,  0., 0., 0.,  0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0.,
      0., 0., 0., 0.,  0., 0., 0.,  0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0.,
      0., 0., 0., 0.,  0., 0., 0.,  0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0.,
      0., 0., 0., 0.,  0., 0., 0.,  0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0.,
      0., 0., 0., 0.,  0., 0., 0.,  0., 0., 0., 0.,  1.,  0., 0., 0., 2., 0.,
      0., 0., 7., 0.,  0., 0., 0.,  0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0.,
      0., 0., 0., 0.,  0., 0., 0.,  0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0.,
      0., 0., 0., 0.,  0., 0., 0.,  0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0.,
      0., 0., 0., 5.,  0., 0., 0.,  6., 0., 0., 0.,  15., 0., 0., 0., 0., 0.,
      0., 0., 0., 0.,  0., 0., 0.,  0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0.,
      0., 0., 0., 0.,  0., 0., 0.,  0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0.,
      0., 0., 0., 0.,  0., 0., 0.,  0., 0., 0., 0.,  0.,  9., 0., 0., 0., 10.,
      0., 0., 0., 23., 0., 0., 0.,  0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0.,
      0., 0., 0., 0.,  0., 0., 0.,  0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0.,
      0., 0., 0., 0.,  0., 0., 30., 0., 0., 0., 32., 0.,  0., 0., 70.};
  const std::array<int, 4> in_shape = {{1, 18, 15, 1}};
  const auto padding = PaddingMode::SAME;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, VALID1x18x15x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0.,
      0., 0., 2., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 3., 0., 0., 0., 4., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 18, 15, 1}};
  const auto padding = PaddingMode::VALID;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, SAME1x18x15x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,   0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,   0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,   0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,   0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,   0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,   0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,   0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,   0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,   0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,   0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,   0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,   0.,  0., 0., 0., 0.,
      1.,  2.,  0.,  0.,  0., 0., 0., 0., 3.,  4.,  0.,   0.,  0., 0., 0., 0.,
      12., 14., 0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,   0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,   0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,   0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,   0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,   0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,   0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 9.,  10., 0.,   0.,  0., 0., 0., 0.,
      11., 12., 0.,  0.,  0., 0., 0., 0., 28., 30., 0.,   0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,   0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,   0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,   0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,   0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,   0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,   0.,  0., 0., 0., 0.,
      17., 18., 0.,  0.,  0., 0., 0., 0., 19., 20., 0.,   0.,  0., 0., 0., 0.,
      44., 46., 0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,   0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,   0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,   0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,   0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  58.,  60., 0., 0., 0., 0.,
      0.,  0.,  62., 64., 0., 0., 0., 0., 0.,  0.,  136., 140.};
  const std::array<int, 4> in_shape = {{1, 18, 15, 2}};
  const auto padding = PaddingMode::SAME;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, VALID1x18x15x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 2., 0., 0.,
      0., 0., 0., 0., 3., 4., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 5., 6., 0., 0., 0., 0., 0., 0., 7., 8.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 18, 15, 2}};
  const auto padding = PaddingMode::VALID;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, SAME1x18x15x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 1.,   2.,   3.,   4.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   5.,   6.,   7.,   8.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   22.,  24.,  26.,  28.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 17.,  18.,  19.,  20.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   21.,  22.,  23.,  24.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   54.,  56.,  58.,  60.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 33.,  34.,  35.,  36.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   37.,  38.,  39.,  40.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   86.,  88.,  90.,  92.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 114., 116., 118., 120., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   122., 124., 126., 128., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   268., 272., 276., 280.};
  const std::array<int, 4> in_shape = {{1, 18, 15, 4}};
  const auto padding = PaddingMode::SAME;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, VALID1x18x15x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 2.,  3.,  4.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 5., 6., 7.,  8.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  9.,  10., 11., 12.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 13., 14., 15., 16., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 18, 15, 4}};
  const auto padding = PaddingMode::VALID;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, SAME1x18x16x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0., 0.,  0., 0., 0., 0.,  0., 0.,  0., 0., 0., 0.,  0., 0., 0.,  0., 0.,
      0., 0.,  0., 0., 0., 0.,  0., 0.,  0., 0., 0., 0.,  0., 0., 0.,  0., 0.,
      0., 0.,  0., 0., 0., 0.,  0., 0.,  0., 0., 0., 0.,  0., 0., 0.,  0., 0.,
      0., 0.,  0., 0., 0., 0.,  0., 0.,  0., 0., 0., 0.,  0., 0., 0.,  0., 0.,
      0., 0.,  0., 0., 0., 0.,  0., 0.,  0., 0., 0., 0.,  0., 0., 0.,  0., 0.,
      0., 0.,  0., 0., 0., 0.,  0., 0.,  0., 0., 0., 0.,  0., 0., 0.,  0., 0.,
      0., 1.,  0., 0., 0., 2.,  0., 0.,  0., 7., 0., 0.,  0., 0., 0.,  0., 0.,
      0., 0.,  0., 0., 0., 0.,  0., 0.,  0., 0., 0., 0.,  0., 0., 0.,  0., 0.,
      0., 0.,  0., 0., 0., 0.,  0., 0.,  0., 0., 0., 0.,  0., 0., 0.,  0., 0.,
      0., 0.,  0., 0., 0., 0.,  0., 0.,  0., 0., 0., 0.,  0., 0., 5.,  0., 0.,
      0., 6.,  0., 0., 0., 15., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,  0., 0.,
      0., 0.,  0., 0., 0., 0.,  0., 0.,  0., 0., 0., 0.,  0., 0., 0.,  0., 0.,
      0., 0.,  0., 0., 0., 0.,  0., 0.,  0., 0., 0., 0.,  0., 0., 0.,  0., 0.,
      0., 0.,  0., 0., 0., 0.,  0., 0.,  0., 0., 9., 0.,  0., 0., 10., 0., 0.,
      0., 23., 0., 0., 0., 0.,  0., 0.,  0., 0., 0., 0.,  0., 0., 0.,  0., 0.,
      0., 0.,  0., 0., 0., 0.,  0., 0.,  0., 0., 0., 0.,  0., 0., 0.,  0., 0.,
      0., 0.,  0., 0., 0., 0.,  0., 30., 0., 0., 0., 32., 0., 0., 0.,  70.};
  const std::array<int, 4> in_shape = {{1, 18, 16, 1}};
  const auto padding = PaddingMode::SAME;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, VALID1x18x16x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 2., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      3., 0., 0., 0., 4., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 18, 16, 1}};
  const auto padding = PaddingMode::VALID;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, SAME1x18x16x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 1.,   2.,
      0., 0., 0., 0., 0., 0., 3.,  4.,  0., 0., 0., 0., 0., 0., 12.,  14.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 9.,   10.,
      0., 0., 0., 0., 0., 0., 11., 12., 0., 0., 0., 0., 0., 0., 28.,  30.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 17.,  18.,
      0., 0., 0., 0., 0., 0., 19., 20., 0., 0., 0., 0., 0., 0., 44.,  46.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 58.,  60.,
      0., 0., 0., 0., 0., 0., 62., 64., 0., 0., 0., 0., 0., 0., 136., 140.};
  const std::array<int, 4> in_shape = {{1, 18, 16, 2}};
  const auto padding = PaddingMode::SAME;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, VALID1x18x16x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 2.,
      0., 0., 0., 0., 0., 0., 3., 4., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      5., 6., 0., 0., 0., 0., 0., 0., 7., 8., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 18, 16, 2}};
  const auto padding = PaddingMode::VALID;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, SAME1x18x16x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.,   2.,   3.,   4.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 5.,   6.,   7.,   8.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 22.,  24.,  26.,  28.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 17.,  18.,  19.,  20.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 21.,  22.,  23.,  24.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 54.,  56.,  58.,  60.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 33.,  34.,  35.,  36.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 37.,  38.,  39.,  40.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 86.,  88.,  90.,  92.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 114., 116., 118., 120.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 122., 124., 126., 128.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 268., 272., 276., 280.};
  const std::array<int, 4> in_shape = {{1, 18, 16, 4}};
  const auto padding = PaddingMode::SAME;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, VALID1x18x16x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      1.,  2.,  3.,  4.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 5.,
      6.,  7.,  8.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  9.,  10., 11., 12., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      13., 14., 15., 16., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 18, 16, 4}};
  const auto padding = PaddingMode::VALID;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, SAME1x18x18x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0., 0., 0., 0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0., 0.,
      0., 0., 0., 0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0., 0.,
      0., 0., 0., 0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0., 0.,
      0., 0., 0., 0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0., 0.,
      0., 0., 0., 0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0., 0.,
      0., 0., 0., 0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0., 0.,
      0., 0., 0., 0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  1., 0., 0.,  0., 2.,
      0., 0., 0., 3.,  0., 0., 9.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0., 0.,
      0., 0., 0., 0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0., 0.,
      0., 0., 0., 0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0., 0.,
      0., 0., 0., 0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0., 6.,
      0., 0., 0., 7.,  0., 0., 0.,  8.,  0., 0., 19., 0.,  0., 0., 0.,  0., 0.,
      0., 0., 0., 0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0., 0.,
      0., 0., 0., 0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0., 0.,
      0., 0., 0., 0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0., 0.,
      0., 0., 0., 11., 0., 0., 0.,  12., 0., 0., 0.,  13., 0., 0., 29., 0., 0.,
      0., 0., 0., 0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0., 0.,
      0., 0., 0., 0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0., 0.,
      0., 0., 0., 0.,  0., 0., 37., 0.,  0., 0., 39., 0.,  0., 0., 41., 0., 0.,
      88.};
  const std::array<int, 4> in_shape = {{1, 18, 18, 1}};
  const auto padding = PaddingMode::SAME;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, VALID1x18x18x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 2., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 3., 0., 0., 0., 4., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 18, 18, 1}};
  const auto padding = PaddingMode::VALID;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, SAME1x18x18x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0.,  0.,  0.,   0.,  0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,   0.,  0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,   0.,  0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,   0.,  0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,   0.,  0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,   0.,  0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,   0.,  0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,   0.,  0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,   0.,  0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,   0.,  0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,   0.,  0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,   0.,  0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,   0.,  0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,   0.,  0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,   0.,  0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,   0.,  0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,   0.,  1., 2., 0.,  0.,  0.,  0.,  0.,  0.,  3.,  4.,
      0.,  0.,  0.,   0.,  0., 0., 5.,  6.,  0.,  0.,  0.,  0.,  16., 18.,
      0.,  0.,  0.,   0.,  0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,   0.,  0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,   0.,  0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,   0.,  0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,   0.,  0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,   0.,  0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,   0.,  0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,   0.,  0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,   0.,  0., 0., 0.,  0.,  11., 12., 0.,  0.,  0.,  0.,
      0.,  0.,  13.,  14., 0., 0., 0.,  0.,  0.,  0.,  15., 16., 0.,  0.,
      0.,  0.,  36.,  38., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,   0.,  0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,   0.,  0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,   0.,  0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,   0.,  0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,   0.,  0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,   0.,  0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,   0.,  0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,   0.,  0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  21., 22.,
      0.,  0.,  0.,   0.,  0., 0., 23., 24., 0.,  0.,  0.,  0.,  0.,  0.,
      25., 26., 0.,   0.,  0., 0., 56., 58., 0.,  0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,   0.,  0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,   0.,  0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,   0.,  0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,   0.,  0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,   0.,  0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,   0.,  0., 0., 0.,  0.,  72., 74., 0.,  0.,  0.,  0.,
      0.,  0.,  76.,  78., 0., 0., 0.,  0.,  0.,  0.,  80., 82., 0.,  0.,
      0.,  0.,  172., 176.};
  const std::array<int, 4> in_shape = {{1, 18, 18, 2}};
  const auto padding = PaddingMode::SAME;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, VALID1x18x18x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 1., 2., 0., 0., 0., 0., 0., 0., 3., 4., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 5., 6., 0., 0., 0., 0., 0., 0., 7., 8., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 18, 18, 2}};
  const auto padding = PaddingMode::VALID;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, SAME1x18x18x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      1.,   2.,   3.,   4.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   5.,   6.,   7.,   8.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   9.,   10.,  11.,  12.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   30.,  32.,  34.,  36.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      21.,  22.,  23.,  24.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   25.,  26.,  27.,  28.,  0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   29.,  30.,  31.,  32.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   70.,  72.,  74.,  76.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      41.,  42.,  43.,  44.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   45.,  46.,  47.,  48.,  0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   49.,  50.,  51.,  52.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   110., 112., 114., 116.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      142., 144., 146., 148., 0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   150., 152., 154., 156., 0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   158., 160., 162., 164.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   340., 344., 348., 352.};
  const std::array<int, 4> in_shape = {{1, 18, 18, 4}};
  const auto padding = PaddingMode::SAME;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, VALID1x18x18x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  1.,  2.,  3.,  4., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  5.,  6.,  7.,  8.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  9.,  10., 11., 12., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 13., 14., 15., 16., 0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 18, 18, 4}};
  const auto padding = PaddingMode::VALID;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, SAME3x15x15x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 1.,  0., 0., 0., 2.,  0., 0., 0., 7.,
      0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 5.,  0., 0., 0., 6.,  0., 0., 0., 15.,
      0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 22., 0., 0., 0., 24., 0., 0., 0., 54.,
      0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 17., 0., 0., 0., 18., 0., 0., 0., 39.,
      0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 21., 0., 0., 0., 22., 0., 0., 0., 47.,
      0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 54., 0., 0., 0., 56., 0., 0., 0., 118.,
      0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 33., 0., 0., 0., 34., 0., 0., 0., 71.,
      0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 37., 0., 0., 0., 38., 0., 0., 0., 79.,
      0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 86., 0., 0., 0., 88., 0., 0., 0., 182.};
  const std::array<int, 4> in_shape = {{3, 15, 15, 1}};
  const auto padding = PaddingMode::SAME;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, VALID3x15x15x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0., 0., 0.,  0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0.,  0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0.,  0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0.,  0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0.,  0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0.,  0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0.,  0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0.,  0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0.,  0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0.,
      0., 0., 2.,  0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0.,  0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0.,  0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0.,  0., 3.,  0., 0., 0., 4., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0.,  0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0.,  0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0.,  0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0.,  0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0.,  0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0.,  0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0.,  0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0.,  0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0.,  0., 0.,  0., 0., 5., 0., 0., 0., 6., 0., 0., 0., 0., 0., 0.,
      0., 0., 0.,  0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0.,  0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0.,  0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 7., 0., 0., 0., 8.,
      0., 0., 0.,  0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0.,  0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0.,  0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0.,  0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0.,  0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0.,  0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0.,  0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0.,  0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0.,  0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 9., 0.,
      0., 0., 10., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0.,  0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0.,  0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      0., 0., 0.,  0., 11., 0., 0., 0., 12.};
  const std::array<int, 4> in_shape = {{3, 15, 15, 1}};
  const auto padding = PaddingMode::VALID;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, SAME3x15x15x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 1.,   2.,   0.,
      0., 0., 0., 0., 0., 3.,   4.,   0., 0., 0., 0., 0., 0.,   12.,  14.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 9.,   10.,  0.,
      0., 0., 0., 0., 0., 11.,  12.,  0., 0., 0., 0., 0., 0.,   28.,  30.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 42.,  44.,  0.,
      0., 0., 0., 0., 0., 46.,  48.,  0., 0., 0., 0., 0., 0.,   104., 108.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 33.,  34.,  0.,
      0., 0., 0., 0., 0., 35.,  36.,  0., 0., 0., 0., 0., 0.,   76.,  78.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 41.,  42.,  0.,
      0., 0., 0., 0., 0., 43.,  44.,  0., 0., 0., 0., 0., 0.,   92.,  94.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 106., 108., 0.,
      0., 0., 0., 0., 0., 110., 112., 0., 0., 0., 0., 0., 0.,   232., 236.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 65.,  66.,  0.,
      0., 0., 0., 0., 0., 67.,  68.,  0., 0., 0., 0., 0., 0.,   140., 142.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 73.,  74.,  0.,
      0., 0., 0., 0., 0., 75.,  76.,  0., 0., 0., 0., 0., 0.,   156., 158.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 170., 172., 0.,
      0., 0., 0., 0., 0., 174., 176., 0., 0., 0., 0., 0., 0.,   360., 364.};
  const std::array<int, 4> in_shape = {{3, 15, 15, 2}};
  const auto padding = PaddingMode::SAME;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, VALID3x15x15x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0.,  1.,  2.,  0.,
      0., 0., 0., 0., 0.,  3.,  4.,  0.,  0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0.,  0.,  5.,  6.,
      0., 0., 0., 0., 0.,  0.,  7.,  8.,  0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  9.,  10., 0.,  0., 0., 0., 0., 0., 11., 12., 0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  13., 14., 0., 0., 0., 0., 0., 0.,  15., 16., 0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 17., 18., 0.,  0.,
      0., 0., 0., 0., 19., 20., 0.,  0.,  0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0., 0., 0.,  21., 22., 0.,
      0., 0., 0., 0., 0.,  23., 24.};
  const std::array<int, 4> in_shape = {{3, 15, 15, 2}};
  const auto padding = PaddingMode::VALID;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, SAME3x15x15x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      1.,   2.,   3.,   4.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   5.,   6.,   7.,   8.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   22.,  24.,  26.,  28.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      17.,  18.,  19.,  20.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   21.,  22.,  23.,  24.,  0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   54.,  56.,  58.,  60.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      82.,  84.,  86.,  88.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   90.,  92.,  94.,  96.,  0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   204., 208., 212., 216.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      65.,  66.,  67.,  68.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   69.,  70.,  71.,  72.,  0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   150., 152., 154., 156.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      81.,  82.,  83.,  84.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   85.,  86.,  87.,  88.,  0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   182., 184., 186., 188.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      210., 212., 214., 216., 0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   218., 220., 222., 224., 0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   460., 464., 468., 472.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   588., 592., 596., 600.,
      0.,   0.,   0.,   0.,   882., 888., 894., 900., 0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      177., 178., 179., 180., 0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   181., 182., 183., 184., 0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   716., 720., 724., 728.};
  const std::array<int, 4> in_shape = {{3, 15, 15, 4}};
  const auto padding = PaddingMode::SAME;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, VALID3x15x15x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 1.,  2.,  3.,  4.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  5.,  6.,  7.,  8.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 9.,  10., 11., 12., 0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  13., 14., 15., 16.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 17., 18., 19., 20., 0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  21., 22., 23., 24.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 25., 26., 27., 28., 0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  29., 30., 31., 32.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  37., 38., 39., 40.,
      0., 0., 0., 0., 74., 76., 78., 80., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  45., 46., 47., 48.};
  const std::array<int, 4> in_shape = {{3, 15, 15, 4}};
  const auto padding = PaddingMode::VALID;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, SAME3x15x16x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 1.,  0., 0., 0., 2.,  0., 0., 0., 7.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 5.,  0., 0., 0., 6.,  0., 0., 0., 15.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 22., 0., 0., 0., 24., 0., 0., 0., 54.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 17., 0., 0., 0., 18., 0., 0., 0., 39.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 21., 0., 0., 0., 22., 0., 0., 0., 47.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 54., 0., 0., 0., 56., 0., 0., 0., 118.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 33., 0., 0., 0., 34., 0., 0., 0., 71.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 37., 0., 0., 0., 38., 0., 0., 0., 79.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 86., 0., 0., 0., 88., 0., 0., 0., 182.};
  const std::array<int, 4> in_shape = {{3, 15, 16, 1}};
  const auto padding = PaddingMode::SAME;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, VALID3x15x16x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0.,  0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0.,
      1.,  0., 0., 0., 2.,  0., 0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 3., 0., 0., 0.,
      4.,  0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0., 5., 0., 0.,  0., 6., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0., 0., 7., 0.,
      0.,  0., 8., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0., 0., 0., 9.,  0., 0., 0., 10., 0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0.,
      0.,  0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0.,
      11., 0., 0., 0., 12., 0.};
  const std::array<int, 4> in_shape = {{3, 15, 16, 1}};
  const auto padding = PaddingMode::VALID;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, SAME3x15x16x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 1.,   2.,
      0., 0., 0., 0., 0., 0., 3.,   4.,   0., 0., 0., 0., 0., 0., 12.,  14.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 9.,   10.,
      0., 0., 0., 0., 0., 0., 11.,  12.,  0., 0., 0., 0., 0., 0., 28.,  30.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 42.,  44.,
      0., 0., 0., 0., 0., 0., 46.,  48.,  0., 0., 0., 0., 0., 0., 104., 108.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 33.,  34.,
      0., 0., 0., 0., 0., 0., 35.,  36.,  0., 0., 0., 0., 0., 0., 76.,  78.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 41.,  42.,
      0., 0., 0., 0., 0., 0., 43.,  44.,  0., 0., 0., 0., 0., 0., 92.,  94.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 106., 108.,
      0., 0., 0., 0., 0., 0., 110., 112., 0., 0., 0., 0., 0., 0., 232., 236.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 65.,  66.,
      0., 0., 0., 0., 0., 0., 67.,  68.,  0., 0., 0., 0., 0., 0., 140., 142.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 73.,  74.,
      0., 0., 0., 0., 0., 0., 75.,  76.,  0., 0., 0., 0., 0., 0., 156., 158.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 170., 172.,
      0., 0., 0., 0., 0., 0., 174., 176., 0., 0., 0., 0., 0., 0., 360., 364.};
  const std::array<int, 4> in_shape = {{3, 15, 16, 2}};
  const auto padding = PaddingMode::SAME;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, VALID3x15x16x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 1.,  2.,  0., 0., 0., 0., 0., 0., 3.,  4.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 5.,  6.,  0., 0., 0., 0., 0., 0., 7.,  8.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 9.,  10., 0., 0., 0., 0., 0., 0., 11., 12., 0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 13., 14., 0., 0., 0., 0., 0., 0., 15., 16., 0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 17., 18., 0., 0., 0., 0., 0., 0., 19., 20., 0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 21., 22., 0., 0., 0., 0., 0., 0., 23., 24., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 15, 16, 2}};
  const auto padding = PaddingMode::VALID;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, SAME3x15x16x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.,   2.,   3.,   4.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 5.,   6.,   7.,   8.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 22.,  24.,  26.,  28.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 17.,  18.,  19.,  20.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 21.,  22.,  23.,  24.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 54.,  56.,  58.,  60.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 82.,  84.,  86.,  88.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 90.,  92.,  94.,  96.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 204., 208., 212., 216.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 65.,  66.,  67.,  68.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 69.,  70.,  71.,  72.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 150., 152., 154., 156.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 81.,  82.,  83.,  84.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 85.,  86.,  87.,  88.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 182., 184., 186., 188.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 210., 212., 214., 216.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 218., 220., 222., 224.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 460., 464., 468., 472.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 274., 276., 278., 280.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 282., 284., 286., 288.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 588., 592., 596., 600.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 338., 340., 342., 344.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 346., 348., 350., 352.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 716., 720., 724., 728.};
  const std::array<int, 4> in_shape = {{3, 15, 16, 4}};
  const auto padding = PaddingMode::SAME;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, VALID3x15x16x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 1.,  2.,  3.,  4.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 5.,  6.,  7.,  8.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 9.,  10., 11., 12., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 13., 14., 15., 16., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 17., 18., 19., 20., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 21., 22., 23., 24., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 25., 26., 27., 28., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 29., 30., 31., 32., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 33., 34., 35., 36., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 37., 38., 39., 40., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 41., 42., 43., 44., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 45., 46., 47., 48., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 15, 16, 4}};
  const auto padding = PaddingMode::VALID;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, SAME3x15x18x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0., 0., 0.,  0.,   0., 0.,  0.,  0.,   0., 0.,  0.,  0.,   0., 0.,  0.,
      0., 0., 0.,  0.,   0., 0.,  0.,  0.,   0., 0.,  0.,  0.,   0., 0.,  0.,
      0., 0., 0.,  0.,   0., 0.,  0.,  0.,   0., 0.,  0.,  0.,   0., 0.,  0.,
      0., 0., 0.,  0.,   0., 0.,  0.,  0.,   0., 0.,  0.,  0.,   0., 0.,  0.,
      0., 0., 0.,  0.,   0., 0.,  0.,  0.,   0., 0.,  0.,  0.,   0., 0.,  0.,
      0., 0., 0.,  0.,   0., 0.,  0.,  0.,   0., 0.,  0.,  0.,   0., 0.,  0.,
      0., 0., 0.,  0.,   0., 0.,  0.,  0.,   0., 0.,  0.,  0.,   0., 0.,  0.,
      0., 0., 0.,  0.,   0., 0.,  0.,  0.,   0., 1.,  0.,  0.,   0., 2.,  0.,
      0., 0., 3.,  0.,   0., 9.,  0.,  0.,   0., 0.,  0.,  0.,   0., 0.,  0.,
      0., 0., 0.,  0.,   0., 0.,  0.,  0.,   0., 0.,  0.,  0.,   0., 0.,  0.,
      0., 0., 0.,  0.,   0., 0.,  0.,  0.,   0., 0.,  0.,  0.,   0., 0.,  0.,
      0., 0., 0.,  0.,   0., 0.,  0.,  0.,   0., 0.,  0.,  0.,   0., 0.,  0.,
      0., 0., 0.,  0.,   0., 0.,  6.,  0.,   0., 0.,  7.,  0.,   0., 0.,  8.,
      0., 0., 19., 0.,   0., 0.,  0.,  0.,   0., 0.,  0.,  0.,   0., 0.,  0.,
      0., 0., 0.,  0.,   0., 0.,  0.,  0.,   0., 0.,  0.,  0.,   0., 0.,  0.,
      0., 0., 0.,  0.,   0., 0.,  0.,  0.,   0., 0.,  0.,  0.,   0., 0.,  0.,
      0., 0., 0.,  0.,   0., 0.,  0.,  0.,   0., 0.,  0.,  0.,   0., 0.,  0.,
      0., 0., 0.,  27.,  0., 0.,  0.,  29.,  0., 0.,  0.,  31.,  0., 0.,  68.,
      0., 0., 0.,  0.,   0., 0.,  0.,  0.,   0., 0.,  0.,  0.,   0., 0.,  0.,
      0., 0., 0.,  0.,   0., 0.,  0.,  0.,   0., 0.,  0.,  0.,   0., 0.,  0.,
      0., 0., 0.,  0.,   0., 0.,  0.,  0.,   0., 0.,  0.,  0.,   0., 0.,  0.,
      0., 0., 0.,  0.,   0., 0.,  0.,  0.,   0., 0.,  0.,  0.,   0., 0.,  0.,
      0., 0., 0.,  0.,   0., 0.,  0.,  0.,   0., 0.,  0.,  0.,   0., 0.,  0.,
      0., 0., 0.,  0.,   0., 0.,  0.,  0.,   0., 0.,  0.,  0.,   0., 0.,  0.,
      0., 0., 0.,  0.,   0., 0.,  0.,  0.,   0., 0.,  0.,  0.,   0., 0.,  0.,
      0., 0., 0.,  0.,   0., 0.,  0.,  0.,   0., 21., 0.,  0.,   0., 22., 0.,
      0., 0., 23., 0.,   0., 49., 0.,  0.,   0., 0.,  0.,  0.,   0., 0.,  0.,
      0., 0., 0.,  0.,   0., 0.,  0.,  0.,   0., 0.,  0.,  0.,   0., 0.,  0.,
      0., 0., 0.,  0.,   0., 0.,  0.,  0.,   0., 0.,  0.,  0.,   0., 0.,  0.,
      0., 0., 0.,  0.,   0., 0.,  0.,  0.,   0., 0.,  0.,  0.,   0., 0.,  0.,
      0., 0., 0.,  0.,   0., 0.,  26., 0.,   0., 0.,  27., 0.,   0., 0.,  28.,
      0., 0., 59., 0.,   0., 0.,  0.,  0.,   0., 0.,  0.,  0.,   0., 0.,  0.,
      0., 0., 0.,  0.,   0., 0.,  0.,  0.,   0., 0.,  0.,  0.,   0., 0.,  0.,
      0., 0., 0.,  0.,   0., 0.,  0.,  0.,   0., 0.,  0.,  0.,   0., 0.,  0.,
      0., 0., 0.,  0.,   0., 0.,  0.,  0.,   0., 0.,  0.,  0.,   0., 0.,  0.,
      0., 0., 0.,  67.,  0., 0.,  0.,  69.,  0., 0.,  0.,  71.,  0., 0.,  148.,
      0., 0., 0.,  0.,   0., 0.,  0.,  0.,   0., 0.,  0.,  0.,   0., 0.,  0.,
      0., 0., 0.,  0.,   0., 0.,  0.,  0.,   0., 0.,  0.,  0.,   0., 0.,  0.,
      0., 0., 0.,  0.,   0., 0.,  0.,  0.,   0., 0.,  0.,  0.,   0., 0.,  0.,
      0., 0., 0.,  0.,   0., 0.,  0.,  0.,   0., 0.,  0.,  0.,   0., 0.,  0.,
      0., 0., 0.,  0.,   0., 0.,  0.,  0.,   0., 0.,  0.,  0.,   0., 0.,  0.,
      0., 0., 0.,  0.,   0., 0.,  0.,  0.,   0., 0.,  0.,  0.,   0., 0.,  0.,
      0., 0., 0.,  0.,   0., 0.,  0.,  0.,   0., 0.,  0.,  0.,   0., 0.,  0.,
      0., 0., 0.,  0.,   0., 0.,  0.,  0.,   0., 41., 0.,  0.,   0., 42., 0.,
      0., 0., 43., 0.,   0., 89., 0.,  0.,   0., 0.,  0.,  0.,   0., 0.,  0.,
      0., 0., 0.,  0.,   0., 0.,  0.,  0.,   0., 0.,  0.,  0.,   0., 0.,  0.,
      0., 0., 0.,  0.,   0., 0.,  0.,  0.,   0., 0.,  0.,  0.,   0., 0.,  0.,
      0., 0., 0.,  0.,   0., 0.,  0.,  0.,   0., 0.,  0.,  0.,   0., 0.,  0.,
      0., 0., 0.,  0.,   0., 0.,  46., 0.,   0., 0.,  47., 0.,   0., 0.,  48.,
      0., 0., 99., 0.,   0., 0.,  0.,  0.,   0., 0.,  0.,  0.,   0., 0.,  0.,
      0., 0., 0.,  0.,   0., 0.,  0.,  0.,   0., 0.,  0.,  0.,   0., 0.,  0.,
      0., 0., 0.,  0.,   0., 0.,  0.,  0.,   0., 0.,  0.,  0.,   0., 0.,  0.,
      0., 0., 0.,  0.,   0., 0.,  0.,  0.,   0., 0.,  0.,  0.,   0., 0.,  0.,
      0., 0., 0.,  107., 0., 0.,  0.,  109., 0., 0.,  0.,  111., 0., 0.,  228.};
  const std::array<int, 4> in_shape = {{3, 15, 18, 1}};
  const auto padding = PaddingMode::SAME;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, VALID3x15x18x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.,  0., 0., 0., 2.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 3.,  0., 0., 0., 4.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 5.,  0., 0., 0., 6.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 7.,  0., 0., 0., 8.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 9.,  0., 0., 0., 10., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 11., 0., 0., 0., 12., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 15, 18, 1}};
  const auto padding = PaddingMode::VALID;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, SAME3x15x18x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   1.,   2.,  0.,  0.,   0.,   0.,
      0.,   0.,   3.,  4.,   0.,   0.,   0.,   0.,   0.,  0.,  5.,   6.,   0.,
      0.,   0.,   0.,  16.,  18.,  0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   11., 12., 0.,   0.,   0.,
      0.,   0.,   0.,  13.,  14.,  0.,   0.,   0.,   0.,  0.,  0.,   15.,  16.,
      0.,   0.,   0.,  0.,   36.,  38.,  0.,   0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   0.,  52., 54.,  0.,   0.,
      0.,   0.,   0.,  0.,   56.,  58.,  0.,   0.,   0.,  0.,  0.,   0.,   60.,
      62.,  0.,   0.,  0.,   0.,   132., 136., 0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,
      0.,   41.,  42., 0.,   0.,   0.,   0.,   0.,   0.,  43., 44.,  0.,   0.,
      0.,   0.,   0.,  0.,   45.,  46.,  0.,   0.,   0.,  0.,  96.,  98.,  0.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   51., 52.,  0.,   0.,   0.,   0.,   0.,  0.,  53.,  54.,  0.,
      0.,   0.,   0.,  0.,   0.,   55.,  56.,  0.,   0.,  0.,  0.,   116., 118.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   0.,  132., 134., 0.,   0.,   0.,   0.,  0.,  0.,   136., 138.,
      0.,   0.,   0.,  0.,   0.,   0.,   140., 142., 0.,  0.,  0.,   0.,   292.,
      296., 0.,   0.,  0.,   0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   81., 82., 0.,   0.,   0.,
      0.,   0.,   0.,  83.,  84.,  0.,   0.,   0.,   0.,  0.,  0.,   85.,  86.,
      0.,   0.,   0.,  0.,   176., 178., 0.,   0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   0.,  91., 92.,  0.,   0.,
      0.,   0.,   0.,  0.,   93.,  94.,  0.,   0.,   0.,  0.,  0.,   0.,   95.,
      96.,  0.,   0.,  0.,   0.,   196., 198., 0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,
      0.,   0.,   0.,  0.,   0.,   0.,   0.,   0.,   0.,  0.,  212., 214., 0.,
      0.,   0.,   0.,  0.,   0.,   216., 218., 0.,   0.,  0.,  0.,   0.,   0.,
      220., 222., 0.,  0.,   0.,   0.,   452., 456.};
  const std::array<int, 4> in_shape = {{3, 15, 18, 2}};
  const auto padding = PaddingMode::SAME;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, VALID3x15x18x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 1.,  2.,  0., 0.,
      0.,  0.,  0., 0., 3.,  4.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 5.,  6.,  0., 0.,
      0.,  0.,  0., 0., 7.,  8.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 9.,  10., 0., 0., 0.,  0.,  0., 0.,
      11., 12., 0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 13., 14., 0., 0., 0.,  0.,  0., 0.,
      15., 16., 0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 17., 18., 0., 0., 0.,  0.,  0., 0., 19., 20., 0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 21., 22., 0., 0., 0.,  0.,  0., 0., 23., 24., 0., 0.,
      0.,  0.,  0., 0.};
  const std::array<int, 4> in_shape = {{3, 15, 18, 2}};
  const auto padding = PaddingMode::VALID;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, SAME3x15x18x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      1.,   2.,   3.,   4.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   5.,   6.,   7.,   8.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   9.,   10.,  11.,  12.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   30.,  32.,  34.,  36.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      21.,  22.,  23.,  24.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   25.,  26.,  27.,  28.,  0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   29.,  30.,  31.,  32.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   70.,  72.,  74.,  76.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      102., 104., 106., 108., 0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   110., 112., 114., 116., 0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   118., 120., 122., 124.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   260., 264., 268., 272.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      81.,  82.,  83.,  84.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   85.,  86.,  87.,  88.,  0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   89.,  90.,  91.,  92.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   190., 192., 194., 196.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      101., 102., 103., 104., 0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   105., 106., 107., 108., 0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   109., 110., 111., 112.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   230., 232., 234., 236.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   580., 584., 588., 592.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      262., 264., 266., 268., 548., 552., 556., 560., 0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      161., 162., 163., 164., 0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   165., 166., 167., 168., 0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   169., 170., 171., 172.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   350., 352., 354., 356.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      181., 182., 183., 184., 0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   185., 186., 187., 188., 0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   189., 190., 191., 192.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   390., 392., 394., 396.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      422., 424., 426., 428., 0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   430., 432., 434., 436., 0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   438., 440., 442., 444.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   900., 904., 908., 912.};
  const std::array<int, 4> in_shape = {{3, 15, 18, 4}};
  const auto padding = PaddingMode::SAME;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, VALID3x15x18x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 1.,  2.,  3.,  4.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  5.,  6.,  7.,  8.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  9.,  10.,
      11., 12., 0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  13.,
      14., 15., 16., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 17., 18., 19., 20., 0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  21., 22., 23., 24.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 54., 56., 58., 60., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 33., 34., 35., 36., 0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  37., 38., 39., 40.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  41., 42.,
      43., 44., 0.,  0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  45.,
      46., 47., 48., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.};
  const std::array<int, 4> in_shape = {{3, 15, 18, 4}};
  const auto padding = PaddingMode::VALID;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, SAME3x16x15x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 1.,
      0., 0., 0., 2.,  0., 0., 0., 7.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 5.,  0., 0., 0., 6.,
      0., 0., 0., 15., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0.,  0., 0., 0., 22., 0., 0., 0., 24., 0., 0., 0., 54.,
      0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 17.,
      0., 0., 0., 18., 0., 0., 0., 39., 0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 21., 0., 0., 0., 22.,
      0., 0., 0., 47., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0.,  0., 0., 0., 54., 0., 0., 0., 56., 0., 0., 0., 118.,
      0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 33.,
      0., 0., 0., 34., 0., 0., 0., 71., 0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 37., 0., 0., 0., 38.,
      0., 0., 0., 79., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0.,  0., 0., 0., 86., 0., 0., 0., 88., 0., 0., 0., 182.};
  const std::array<int, 4> in_shape = {{3, 16, 15, 1}};
  const auto padding = PaddingMode::SAME;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, VALID3x16x15x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0.,  0.,
      0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0.,  0.,
      0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0.,  0.,
      0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0.,  0.,
      0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0.,  0.,
      0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0.,  0.,
      0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0.,  0.,
      0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0.,  0.,
      0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0.,  0.,
      0., 0., 0., 0.,  0., 0., 0., 1.,  0., 0., 0., 2., 0., 0., 0., 0.,  0.,
      0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0.,  0.,
      0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0.,  0.,
      0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0.,  3.,
      0., 0., 0., 4.,  0., 0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0.,  0.,
      0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0.,  0.,
      0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0.,  0.,
      0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0.,  0.,
      0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0.,  0.,
      0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0.,  0.,
      0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0.,  0.,
      0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0.,  0.,
      0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0.,  0.,
      0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0.,  0.,
      0., 0., 0., 0.,  0., 0., 0., 0.,  0., 5., 0., 0., 0., 6., 0., 0.,  0.,
      0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0.,  0.,
      0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0.,  0.,
      0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0.,  0.,
      0., 7., 0., 0.,  0., 8., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0.,  0.,
      0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0.,  0.,
      0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0.,  0.,
      0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0.,  0.,
      0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0.,  0.,
      0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0.,  0.,
      0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0.,  0.,
      0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0.,  0.,
      0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0.,  0.,
      0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0.,  0.,
      0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 9., 0., 0., 0., 10., 0.,
      0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0.,  0.,
      0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0.,  0.,
      0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0.,  0.,
      0., 0., 0., 11., 0., 0., 0., 12., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,
      0., 0., 0., 0.,  0., 0.};
  const std::array<int, 4> in_shape = {{3, 16, 15, 1}};
  const auto padding = PaddingMode::VALID;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, SAME3x16x15x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 1.,   2.,
      0., 0., 0., 0., 0., 0., 3.,   4.,   0., 0., 0., 0., 0., 0., 12.,  14.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 9.,   10.,  0., 0., 0., 0., 0., 0., 11.,  12.,
      0., 0., 0., 0., 0., 0., 28.,  30.,  0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 42.,  44.,
      0., 0., 0., 0., 0., 0., 46.,  48.,  0., 0., 0., 0., 0., 0., 104., 108.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 33.,  34.,
      0., 0., 0., 0., 0., 0., 35.,  36.,  0., 0., 0., 0., 0., 0., 76.,  78.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 41.,  42.,  0., 0., 0., 0., 0., 0., 43.,  44.,
      0., 0., 0., 0., 0., 0., 92.,  94.,  0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 106., 108.,
      0., 0., 0., 0., 0., 0., 110., 112., 0., 0., 0., 0., 0., 0., 232., 236.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 65.,  66.,
      0., 0., 0., 0., 0., 0., 67.,  68.,  0., 0., 0., 0., 0., 0., 140., 142.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 73.,  74.,  0., 0., 0., 0., 0., 0., 75.,  76.,
      0., 0., 0., 0., 0., 0., 156., 158., 0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 170., 172.,
      0., 0., 0., 0., 0., 0., 174., 176., 0., 0., 0., 0., 0., 0., 360., 364.};
  const std::array<int, 4> in_shape = {{3, 16, 15, 2}};
  const auto padding = PaddingMode::SAME;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, VALID3x16x15x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      1.,  2.,  0., 0., 0., 0., 0., 0., 3.,  4.,  0., 0., 0., 0., 0., 0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 5.,  6.,  0., 0., 0., 0., 0., 0.,
      7.,  8.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      9.,  10., 0., 0., 0., 0., 0., 0., 11., 12., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 13., 14., 0., 0., 0., 0., 0., 0.,
      15., 16., 0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      17., 18., 0., 0., 0., 0., 0., 0., 19., 20., 0., 0., 0., 0., 0., 0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 21., 22., 0., 0., 0., 0., 0., 0.,
      23., 24., 0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 16, 15, 2}};
  const auto padding = PaddingMode::VALID;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, SAME3x16x15x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      1.,   2.,   3.,   4.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   5.,   6.,   7.,   8.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   22.,  24.,  26.,  28.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      17.,  18.,  19.,  20.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   21.,  22.,  23.,  24.,  0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   54.,  56.,  58.,  60.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      82.,  84.,  86.,  88.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   90.,  92.,  94.,  96.,  0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   204., 208., 212., 216.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      65.,  66.,  67.,  68.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   69.,  70.,  71.,  72.,  0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   150., 152., 154., 156.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      81.,  82.,  83.,  84.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   85.,  86.,  87.,  88.,  0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   182., 184., 186., 188.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      210., 212., 214., 216., 0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   218., 220., 222., 224., 0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   460., 464., 468., 472.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   588., 592., 596., 600.,
      0.,   0.,   0.,   0.,   556., 560., 564., 568., 0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      338., 340., 342., 344., 0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   346., 348., 350., 352., 0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   716., 720., 724., 728.};
  const std::array<int, 4> in_shape = {{3, 16, 15, 4}};
  const auto padding = PaddingMode::SAME;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, VALID3x16x15x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 1.,  2.,  3.,  4.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  5.,  6.,  7.,  8.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 9.,  10., 11., 12., 0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  13., 14., 15., 16.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 17., 18., 19., 20., 0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  21., 22., 23., 24.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 25., 26., 27., 28., 0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  29., 30., 31., 32.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  37., 38., 39., 40.,
      0., 0., 0., 0., 33., 34., 35., 36., 0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 41., 42., 43., 44., 0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  45., 46., 47., 48.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.};
  const std::array<int, 4> in_shape = {{3, 16, 15, 4}};
  const auto padding = PaddingMode::VALID;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, SAME3x16x16x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 1.,  0., 0., 0., 2.,  0., 0., 0., 7.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 5.,  0., 0., 0., 6.,  0., 0., 0., 15.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 22., 0., 0., 0., 24., 0., 0., 0., 54.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 17., 0., 0., 0., 18., 0., 0., 0., 39.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 21., 0., 0., 0., 22., 0., 0., 0., 47.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 54., 0., 0., 0., 56., 0., 0., 0., 118.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 33., 0., 0., 0., 34., 0., 0., 0., 71.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 37., 0., 0., 0., 38., 0., 0., 0., 79.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 86., 0., 0., 0., 88., 0., 0., 0., 182.};
  const std::array<int, 4> in_shape = {{3, 16, 16, 1}};
  const auto padding = PaddingMode::SAME;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, VALID3x16x16x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0., 0., 0.,  0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0.,
      0., 0., 0.,  0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0.,
      0., 0., 0.,  0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0.,
      0., 0., 0.,  0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0.,
      0., 0., 0.,  0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0.,
      0., 0., 0.,  0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0.,
      0., 0., 0.,  0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0.,
      0., 0., 0.,  0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0.,
      0., 0., 0.,  0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0.,
      0., 0., 0.,  0., 0., 0., 0., 0., 1.,  0., 0., 0., 2.,  0., 0., 0., 0., 0.,
      0., 0., 0.,  0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0.,
      0., 0., 0.,  0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0.,
      0., 0., 0.,  0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0.,
      3., 0., 0.,  0., 4., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0.,
      0., 0., 0.,  0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0.,
      0., 0., 0.,  0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0.,
      0., 0., 0.,  0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0.,
      0., 0., 0.,  0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0.,
      0., 0., 0.,  0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0.,
      0., 0., 0.,  0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0.,
      0., 0., 0.,  0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0.,
      0., 0., 0.,  0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0.,
      0., 0., 0.,  0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0.,
      0., 0., 0.,  0., 0., 0., 0., 0., 0.,  0., 0., 0., 5.,  0., 0., 0., 6., 0.,
      0., 0., 0.,  0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0.,
      0., 0., 0.,  0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0.,
      0., 0., 0.,  0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0.,
      0., 0., 0.,  0., 7., 0., 0., 0., 8.,  0., 0., 0., 0.,  0., 0., 0., 0., 0.,
      0., 0., 0.,  0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0.,
      0., 0., 0.,  0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0.,
      0., 0., 0.,  0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0.,
      0., 0., 0.,  0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0.,
      0., 0., 0.,  0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0.,
      0., 0., 0.,  0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0.,
      0., 0., 0.,  0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0.,
      0., 0., 0.,  0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0.,
      0., 0., 0.,  0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0.,
      0., 0., 0.,  0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 9., 0.,
      0., 0., 10., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0.,
      0., 0., 0.,  0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0.,
      0., 0., 0.,  0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0., 0., 0.,
      0., 0., 0.,  0., 0., 0., 0., 0., 11., 0., 0., 0., 12., 0., 0., 0., 0., 0.,
      0., 0., 0.,  0., 0., 0., 0., 0., 0.,  0., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 16, 16, 1}};
  const auto padding = PaddingMode::VALID;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, SAME3x16x16x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 1.,   2.,
      0., 0., 0., 0., 0., 0., 3.,   4.,   0., 0., 0., 0., 0., 0., 12.,  14.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 9.,   10.,
      0., 0., 0., 0., 0., 0., 11.,  12.,  0., 0., 0., 0., 0., 0., 28.,  30.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 42.,  44.,
      0., 0., 0., 0., 0., 0., 46.,  48.,  0., 0., 0., 0., 0., 0., 104., 108.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 33.,  34.,
      0., 0., 0., 0., 0., 0., 35.,  36.,  0., 0., 0., 0., 0., 0., 76.,  78.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 41.,  42.,
      0., 0., 0., 0., 0., 0., 43.,  44.,  0., 0., 0., 0., 0., 0., 92.,  94.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 106., 108.,
      0., 0., 0., 0., 0., 0., 110., 112., 0., 0., 0., 0., 0., 0., 232., 236.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 65.,  66.,
      0., 0., 0., 0., 0., 0., 67.,  68.,  0., 0., 0., 0., 0., 0., 140., 142.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 73.,  74.,
      0., 0., 0., 0., 0., 0., 75.,  76.,  0., 0., 0., 0., 0., 0., 156., 158.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 170., 172.,
      0., 0., 0., 0., 0., 0., 174., 176., 0., 0., 0., 0., 0., 0., 360., 364.};
  const std::array<int, 4> in_shape = {{3, 16, 16, 2}};
  const auto padding = PaddingMode::SAME;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, VALID3x16x16x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 1.,  2.,  0., 0., 0., 0., 0., 0., 3.,  4.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 5.,  6.,  0., 0., 0., 0., 0., 0., 7.,  8.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 9.,  10., 0., 0., 0., 0., 0., 0., 11., 12., 0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 13., 14., 0., 0., 0., 0., 0., 0., 15., 16., 0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 17., 18., 0., 0., 0., 0., 0., 0., 19., 20., 0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 21., 22., 0., 0., 0., 0., 0., 0., 23., 24., 0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.};
  const std::array<int, 4> in_shape = {{3, 16, 16, 2}};
  const auto padding = PaddingMode::VALID;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, SAME3x16x16x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.,   2.,   3.,   4.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 5.,   6.,   7.,   8.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 22.,  24.,  26.,  28.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 17.,  18.,  19.,  20.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 21.,  22.,  23.,  24.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 54.,  56.,  58.,  60.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 82.,  84.,  86.,  88.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 90.,  92.,  94.,  96.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 204., 208., 212., 216.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 65.,  66.,  67.,  68.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 69.,  70.,  71.,  72.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 150., 152., 154., 156.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 81.,  82.,  83.,  84.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 85.,  86.,  87.,  88.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 182., 184., 186., 188.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 210., 212., 214., 216.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 218., 220., 222., 224.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 460., 464., 468., 472.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 129., 130., 131., 132.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 133., 134., 135., 136.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 278., 280., 282., 284.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 145., 146., 147., 148.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 149., 150., 151., 152.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 310., 312., 314., 316.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 338., 340., 342., 344.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 346., 348., 350., 352.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 716., 720., 724., 728.};
  const std::array<int, 4> in_shape = {{3, 16, 16, 4}};
  const auto padding = PaddingMode::SAME;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, VALID3x16x16x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 1.,  2.,  3.,  4.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 5.,  6.,  7.,  8.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 9.,  10., 11., 12., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 13., 14., 15., 16., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 17., 18., 19., 20., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 21., 22., 23., 24., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 25., 26., 27., 28., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 29., 30., 31., 32., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 33., 34., 35., 36., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 37., 38., 39., 40., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 41., 42., 43., 44., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 45., 46., 47., 48., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 16, 16, 4}};
  const auto padding = PaddingMode::VALID;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, SAME3x16x18x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0.,  0., 0., 0., 0.,   0., 0., 0.,  0.,   0., 0., 0., 0.,   0., 0., 0.,
      0.,  0., 0., 0., 0.,   0., 0., 0.,  0.,   0., 0., 0., 0.,   0., 0., 0.,
      0.,  0., 0., 0., 0.,   0., 0., 0.,  0.,   0., 0., 0., 0.,   0., 0., 0.,
      0.,  0., 0., 0., 0.,   0., 0., 0.,  0.,   0., 0., 0., 0.,   0., 0., 0.,
      0.,  0., 0., 0., 0.,   0., 0., 0.,  0.,   0., 0., 0., 0.,   0., 0., 0.,
      0.,  0., 0., 0., 0.,   0., 0., 0.,  0.,   0., 0., 0., 0.,   0., 0., 0.,
      0.,  0., 0., 0., 0.,   0., 0., 0.,  0.,   0., 0., 0., 0.,   0., 0., 0.,
      0.,  0., 0., 0., 0.,   0., 0., 0.,  0.,   0., 0., 0., 0.,   0., 0., 0.,
      0.,  0., 0., 0., 1.,   0., 0., 0.,  2.,   0., 0., 0., 3.,   0., 0., 9.,
      0.,  0., 0., 0., 0.,   0., 0., 0.,  0.,   0., 0., 0., 0.,   0., 0., 0.,
      0.,  0., 0., 0., 0.,   0., 0., 0.,  0.,   0., 0., 0., 0.,   0., 0., 0.,
      0.,  0., 0., 0., 0.,   0., 0., 0.,  0.,   0., 0., 0., 0.,   0., 0., 0.,
      0.,  0., 0., 0., 0.,   0., 0., 0.,  0.,   0., 0., 0., 6.,   0., 0., 0.,
      7.,  0., 0., 0., 8.,   0., 0., 19., 0.,   0., 0., 0., 0.,   0., 0., 0.,
      0.,  0., 0., 0., 0.,   0., 0., 0.,  0.,   0., 0., 0., 0.,   0., 0., 0.,
      0.,  0., 0., 0., 0.,   0., 0., 0.,  0.,   0., 0., 0., 0.,   0., 0., 0.,
      0.,  0., 0., 0., 0.,   0., 0., 0.,  0.,   0., 0., 0., 0.,   0., 0., 0.,
      0.,  0., 0., 0., 27.,  0., 0., 0.,  29.,  0., 0., 0., 31.,  0., 0., 68.,
      0.,  0., 0., 0., 0.,   0., 0., 0.,  0.,   0., 0., 0., 0.,   0., 0., 0.,
      0.,  0., 0., 0., 0.,   0., 0., 0.,  0.,   0., 0., 0., 0.,   0., 0., 0.,
      0.,  0., 0., 0., 0.,   0., 0., 0.,  0.,   0., 0., 0., 0.,   0., 0., 0.,
      0.,  0., 0., 0., 0.,   0., 0., 0.,  0.,   0., 0., 0., 0.,   0., 0., 0.,
      0.,  0., 0., 0., 0.,   0., 0., 0.,  0.,   0., 0., 0., 0.,   0., 0., 0.,
      0.,  0., 0., 0., 0.,   0., 0., 0.,  0.,   0., 0., 0., 0.,   0., 0., 0.,
      0.,  0., 0., 0., 0.,   0., 0., 0.,  0.,   0., 0., 0., 0.,   0., 0., 0.,
      0.,  0., 0., 0., 0.,   0., 0., 0.,  0.,   0., 0., 0., 0.,   0., 0., 0.,
      0.,  0., 0., 0., 21.,  0., 0., 0.,  22.,  0., 0., 0., 23.,  0., 0., 49.,
      0.,  0., 0., 0., 0.,   0., 0., 0.,  0.,   0., 0., 0., 0.,   0., 0., 0.,
      0.,  0., 0., 0., 0.,   0., 0., 0.,  0.,   0., 0., 0., 0.,   0., 0., 0.,
      0.,  0., 0., 0., 0.,   0., 0., 0.,  0.,   0., 0., 0., 0.,   0., 0., 0.,
      0.,  0., 0., 0., 0.,   0., 0., 0.,  0.,   0., 0., 0., 26.,  0., 0., 0.,
      27., 0., 0., 0., 28.,  0., 0., 59., 0.,   0., 0., 0., 0.,   0., 0., 0.,
      0.,  0., 0., 0., 0.,   0., 0., 0.,  0.,   0., 0., 0., 0.,   0., 0., 0.,
      0.,  0., 0., 0., 0.,   0., 0., 0.,  0.,   0., 0., 0., 0.,   0., 0., 0.,
      0.,  0., 0., 0., 0.,   0., 0., 0.,  0.,   0., 0., 0., 0.,   0., 0., 0.,
      0.,  0., 0., 0., 67.,  0., 0., 0.,  69.,  0., 0., 0., 71.,  0., 0., 148.,
      0.,  0., 0., 0., 0.,   0., 0., 0.,  0.,   0., 0., 0., 0.,   0., 0., 0.,
      0.,  0., 0., 0., 0.,   0., 0., 0.,  0.,   0., 0., 0., 0.,   0., 0., 0.,
      0.,  0., 0., 0., 0.,   0., 0., 0.,  0.,   0., 0., 0., 0.,   0., 0., 0.,
      0.,  0., 0., 0., 0.,   0., 0., 0.,  0.,   0., 0., 0., 0.,   0., 0., 0.,
      0.,  0., 0., 0., 0.,   0., 0., 0.,  0.,   0., 0., 0., 0.,   0., 0., 0.,
      0.,  0., 0., 0., 0.,   0., 0., 0.,  0.,   0., 0., 0., 0.,   0., 0., 0.,
      0.,  0., 0., 0., 0.,   0., 0., 0.,  0.,   0., 0., 0., 0.,   0., 0., 0.,
      0.,  0., 0., 0., 0.,   0., 0., 0.,  0.,   0., 0., 0., 0.,   0., 0., 0.,
      0.,  0., 0., 0., 41.,  0., 0., 0.,  42.,  0., 0., 0., 43.,  0., 0., 89.,
      0.,  0., 0., 0., 0.,   0., 0., 0.,  0.,   0., 0., 0., 0.,   0., 0., 0.,
      0.,  0., 0., 0., 0.,   0., 0., 0.,  0.,   0., 0., 0., 0.,   0., 0., 0.,
      0.,  0., 0., 0., 0.,   0., 0., 0.,  0.,   0., 0., 0., 0.,   0., 0., 0.,
      0.,  0., 0., 0., 0.,   0., 0., 0.,  0.,   0., 0., 0., 46.,  0., 0., 0.,
      47., 0., 0., 0., 48.,  0., 0., 99., 0.,   0., 0., 0., 0.,   0., 0., 0.,
      0.,  0., 0., 0., 0.,   0., 0., 0.,  0.,   0., 0., 0., 0.,   0., 0., 0.,
      0.,  0., 0., 0., 0.,   0., 0., 0.,  0.,   0., 0., 0., 0.,   0., 0., 0.,
      0.,  0., 0., 0., 0.,   0., 0., 0.,  0.,   0., 0., 0., 0.,   0., 0., 0.,
      0.,  0., 0., 0., 107., 0., 0., 0.,  109., 0., 0., 0., 111., 0., 0., 228.};
  const std::array<int, 4> in_shape = {{3, 16, 18, 1}};
  const auto padding = PaddingMode::SAME;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, VALID3x16x18x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.,  0., 0., 0., 2.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 3.,  0., 0., 0., 4.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 5.,  0., 0., 0., 6.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 7.,  0., 0., 0., 8.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 9.,  0., 0., 0., 10., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 11., 0., 0., 0., 12., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 16, 18, 1}};
  const auto padding = PaddingMode::VALID;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, SAME3x16x18x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      1.,   2.,   0., 0., 0.,   0.,   0., 0., 3.,   4.,   0.,   0.,
      0.,   0.,   0., 0., 5.,   6.,   0., 0., 0.,   0.,   16.,  18.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      11.,  12.,  0., 0., 0.,   0.,   0., 0., 13.,  14.,  0.,   0.,
      0.,   0.,   0., 0., 15.,  16.,  0., 0., 0.,   0.,   36.,  38.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      52.,  54.,  0., 0., 0.,   0.,   0., 0., 56.,  58.,  0.,   0.,
      0.,   0.,   0., 0., 60.,  62.,  0., 0., 0.,   0.,   132., 136.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      41.,  42.,  0., 0., 0.,   0.,   0., 0., 43.,  44.,  0.,   0.,
      0.,   0.,   0., 0., 45.,  46.,  0., 0., 0.,   0.,   96.,  98.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      51.,  52.,  0., 0., 0.,   0.,   0., 0., 53.,  54.,  0.,   0.,
      0.,   0.,   0., 0., 55.,  56.,  0., 0., 0.,   0.,   116., 118.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      132., 134., 0., 0., 0.,   0.,   0., 0., 136., 138., 0.,   0.,
      0.,   0.,   0., 0., 140., 142., 0., 0., 0.,   0.,   292., 296.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      81.,  82.,  0., 0., 0.,   0.,   0., 0., 83.,  84.,  0.,   0.,
      0.,   0.,   0., 0., 85.,  86.,  0., 0., 0.,   0.,   176., 178.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      91.,  92.,  0., 0., 0.,   0.,   0., 0., 93.,  94.,  0.,   0.,
      0.,   0.,   0., 0., 95.,  96.,  0., 0., 0.,   0.,   196., 198.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      212., 214., 0., 0., 0.,   0.,   0., 0., 216., 218., 0.,   0.,
      0.,   0.,   0., 0., 220., 222., 0., 0., 0.,   0.,   452., 456.};
  const std::array<int, 4> in_shape = {{3, 16, 18, 2}};
  const auto padding = PaddingMode::SAME;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, VALID3x16x18x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 1.,  2.,  0., 0.,
      0., 0., 0., 0., 3.,  4.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 5.,  6.,  0., 0.,
      0., 0., 0., 0., 7.,  8.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 9.,  10., 0., 0.,
      0., 0., 0., 0., 11., 12., 0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 13., 14., 0., 0.,
      0., 0., 0., 0., 15., 16., 0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 17., 18., 0., 0.,
      0., 0., 0., 0., 19., 20., 0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 21., 22., 0., 0.,
      0., 0., 0., 0., 23., 24., 0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.};
  const std::array<int, 4> in_shape = {{3, 16, 18, 2}};
  const auto padding = PaddingMode::VALID;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, SAME3x16x18x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      1.,   2.,   3.,   4.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   5.,   6.,   7.,   8.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   9.,   10.,  11.,  12.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   30.,  32.,  34.,  36.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      21.,  22.,  23.,  24.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   25.,  26.,  27.,  28.,  0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   29.,  30.,  31.,  32.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   70.,  72.,  74.,  76.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      102., 104., 106., 108., 0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   110., 112., 114., 116., 0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   118., 120., 122., 124.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   260., 264., 268., 272.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      81.,  82.,  83.,  84.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   85.,  86.,  87.,  88.,  0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   89.,  90.,  91.,  92.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   190., 192., 194., 196.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      101., 102., 103., 104., 0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   105., 106., 107., 108., 0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   109., 110., 111., 112.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   810., 816., 822., 828.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      262., 264., 266., 268., 548., 552., 556., 560., 0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      161., 162., 163., 164., 0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   165., 166., 167., 168., 0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   169., 170., 171., 172.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   350., 352., 354., 356.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      181., 182., 183., 184., 0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   185., 186., 187., 188., 0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   189., 190., 191., 192.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   390., 392., 394., 396.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      422., 424., 426., 428., 0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   430., 432., 434., 436., 0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   438., 440., 442., 444.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   900., 904., 908., 912.};
  const std::array<int, 4> in_shape = {{3, 16, 18, 4}};
  const auto padding = PaddingMode::SAME;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, VALID3x16x18x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 1.,  2.,  3.,  4.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 5.,  6.,  7.,  8.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 9.,  10., 11., 12., 0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 13., 14., 15., 16., 0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 17., 18., 19., 20., 0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 21., 22., 23., 24., 0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  54., 56., 58., 60.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 33., 34., 35., 36., 0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 37., 38., 39., 40., 0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 41., 42., 43., 44., 0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 45., 46., 47., 48., 0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.};
  const std::array<int, 4> in_shape = {{3, 16, 18, 4}};
  const auto padding = PaddingMode::VALID;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, SAME3x18x15x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0., 0., 0., 0., 0., 0., 0.,   0., 0., 0., 0.,   0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0.,   0., 0., 0., 0.,   0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0.,   0., 0., 0., 0.,   0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0.,   0., 0., 0., 0.,   0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0.,   0., 0., 0., 0.,   0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0.,   0., 0., 0., 0.,   0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 1.,   0., 0., 0., 2.,   0., 0., 0., 7.,
      0., 0., 0., 0., 0., 0., 0.,   0., 0., 0., 0.,   0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0.,   0., 0., 0., 0.,   0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0.,   0., 0., 0., 0.,   0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 5.,   0., 0., 0., 6.,   0., 0., 0., 15.,
      0., 0., 0., 0., 0., 0., 0.,   0., 0., 0., 0.,   0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0.,   0., 0., 0., 0.,   0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0.,   0., 0., 0., 0.,   0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 9.,   0., 0., 0., 10.,  0., 0., 0., 23.,
      0., 0., 0., 0., 0., 0., 0.,   0., 0., 0., 0.,   0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0.,   0., 0., 0., 0.,   0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 30.,  0., 0., 0., 32.,  0., 0., 0., 70.,
      0., 0., 0., 0., 0., 0., 0.,   0., 0., 0., 0.,   0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0.,   0., 0., 0., 0.,   0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0.,   0., 0., 0., 0.,   0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0.,   0., 0., 0., 0.,   0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0.,   0., 0., 0., 0.,   0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0.,   0., 0., 0., 0.,   0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 21.,  0., 0., 0., 22.,  0., 0., 0., 47.,
      0., 0., 0., 0., 0., 0., 0.,   0., 0., 0., 0.,   0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0.,   0., 0., 0., 0.,   0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0.,   0., 0., 0., 0.,   0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 25.,  0., 0., 0., 26.,  0., 0., 0., 55.,
      0., 0., 0., 0., 0., 0., 0.,   0., 0., 0., 0.,   0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0.,   0., 0., 0., 0.,   0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0.,   0., 0., 0., 0.,   0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 29.,  0., 0., 0., 30.,  0., 0., 0., 63.,
      0., 0., 0., 0., 0., 0., 0.,   0., 0., 0., 0.,   0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0.,   0., 0., 0., 0.,   0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 70.,  0., 0., 0., 72.,  0., 0., 0., 150.,
      0., 0., 0., 0., 0., 0., 0.,   0., 0., 0., 0.,   0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0.,   0., 0., 0., 0.,   0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0.,   0., 0., 0., 0.,   0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0.,   0., 0., 0., 0.,   0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0.,   0., 0., 0., 0.,   0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0.,   0., 0., 0., 0.,   0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 41.,  0., 0., 0., 42.,  0., 0., 0., 87.,
      0., 0., 0., 0., 0., 0., 0.,   0., 0., 0., 0.,   0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0.,   0., 0., 0., 0.,   0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0.,   0., 0., 0., 0.,   0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 45.,  0., 0., 0., 46.,  0., 0., 0., 95.,
      0., 0., 0., 0., 0., 0., 0.,   0., 0., 0., 0.,   0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0.,   0., 0., 0., 0.,   0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0.,   0., 0., 0., 0.,   0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 49.,  0., 0., 0., 50.,  0., 0., 0., 103.,
      0., 0., 0., 0., 0., 0., 0.,   0., 0., 0., 0.,   0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0.,   0., 0., 0., 0.,   0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 110., 0., 0., 0., 112., 0., 0., 0., 230.};
  const std::array<int, 4> in_shape = {{3, 18, 15, 1}};
  const auto padding = PaddingMode::SAME;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, VALID3x18x15x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 1.,  0., 0., 0., 2., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0., 0.,  0., 0., 0., 3.,
      0., 0., 0., 4., 0., 0., 0., 0.,  0., 0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 5., 0., 0.,  0., 6., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0., 0.,  0., 7., 0., 0.,
      0., 8., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 9., 0., 0., 0., 10., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0., 11., 0., 0., 0., 12.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0., 0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 18, 15, 1}};
  const auto padding = PaddingMode::VALID;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, SAME3x18x15x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 1.,   2.,   0.,
      0., 0., 0., 0., 0., 3.,   4.,   0., 0., 0., 0., 0., 0.,   12.,  14.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 9.,   10.,  0.,
      0., 0., 0., 0., 0., 11.,  12.,  0., 0., 0., 0., 0., 0.,   28.,  30.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 17.,  18.,  0.,
      0., 0., 0., 0., 0., 19.,  20.,  0., 0., 0., 0., 0., 0.,   44.,  46.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 58.,  60.,  0.,
      0., 0., 0., 0., 0., 62.,  64.,  0., 0., 0., 0., 0., 0.,   136., 140.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 41.,  42.,  0.,
      0., 0., 0., 0., 0., 43.,  44.,  0., 0., 0., 0., 0., 0.,   92.,  94.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 49.,  50.,  0.,
      0., 0., 0., 0., 0., 51.,  52.,  0., 0., 0., 0., 0., 0.,   108., 110.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 57.,  58.,  0.,
      0., 0., 0., 0., 0., 59.,  60.,  0., 0., 0., 0., 0., 0.,   124., 126.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 138., 140., 0.,
      0., 0., 0., 0., 0., 142., 144., 0., 0., 0., 0., 0., 0.,   296., 300.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 81.,  82.,  0.,
      0., 0., 0., 0., 0., 83.,  84.,  0., 0., 0., 0., 0., 0.,   172., 174.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 89.,  90.,  0.,
      0., 0., 0., 0., 0., 91.,  92.,  0., 0., 0., 0., 0., 0.,   188., 190.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 97.,  98.,  0.,
      0., 0., 0., 0., 0., 99.,  100., 0., 0., 0., 0., 0., 0.,   204., 206.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0.,   0.,   0.,
      0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 218., 220., 0.,
      0., 0., 0., 0., 0., 222., 224., 0., 0., 0., 0., 0., 0.,   456., 460.};
  const std::array<int, 4> in_shape = {{3, 18, 15, 2}};
  const auto padding = PaddingMode::SAME;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, VALID3x18x15x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      1.,  2.,  0., 0., 0.,  0.,  0., 0., 3.,  4.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 5.,  6.,  0., 0., 0.,  0.,  0., 0.,
      7.,  8.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 9.,  10., 0., 0.,
      0.,  0.,  0., 0., 11., 12., 0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 13., 14., 0., 0., 0.,  0.,  0., 0., 15., 16., 0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 17., 18., 0., 0., 0.,  0.,  0., 0.,
      19., 20., 0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      21., 22., 0., 0., 0.,  0.,  0., 0., 23., 24., 0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0.};
  const std::array<int, 4> in_shape = {{3, 18, 15, 2}};
  const auto padding = PaddingMode::VALID;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, SAME3x18x15x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      1.,   2.,   3.,   4.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   5.,   6.,   7.,   8.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   22.,  24.,  26.,  28.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      17.,  18.,  19.,  20.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   21.,  22.,  23.,  24.,  0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   54.,  56.,  58.,  60.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      33.,  34.,  35.,  36.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   37.,  38.,  39.,  40.,  0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   86.,  88.,  90.,  92.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      114., 116., 118., 120., 0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   122., 124., 126., 128., 0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   268., 272., 276., 280.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      81.,  82.,  83.,  84.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   85.,  86.,  87.,  88.,  0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   182., 184., 186., 188.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      97.,  98.,  99.,  100., 0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   101., 102., 103., 104., 0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   214., 216., 218., 220.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      113., 114., 115., 116., 0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   117., 118., 119., 120., 0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   246., 248., 250., 252.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   588., 592., 596., 600.,
      0.,   0.,   0.,   0.,   556., 560., 564., 568., 0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      161., 162., 163., 164., 0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   165., 166., 167., 168., 0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   342., 344., 346., 348.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      177., 178., 179., 180., 0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   181., 182., 183., 184., 0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   374., 376., 378., 380.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      193., 194., 195., 196., 0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   197., 198., 199., 200., 0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   406., 408., 410., 412.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      434., 436., 438., 440., 0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   442., 444., 446., 448., 0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   908., 912., 916., 920.};
  const std::array<int, 4> in_shape = {{3, 18, 15, 4}};
  const auto padding = PaddingMode::SAME;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, VALID3x18x15x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      1.,  2.,  3.,  4.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      5.,  6.,  7.,  8.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      9.,  10., 11., 12., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      13., 14., 15., 16., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 17., 18., 19., 20., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 21., 22., 23., 24., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 25., 26., 27., 28., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 29., 30., 31., 32., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      33., 34., 35., 36., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      37., 38., 39., 40., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      41., 42., 43., 44., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      45., 46., 47., 48., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 18, 15, 4}};
  const auto padding = PaddingMode::VALID;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, SAME3x18x16x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0., 0., 0., 0., 0., 0., 0., 0.,   0., 0., 0., 0.,   0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,   0., 0., 0., 0.,   0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,   0., 0., 0., 0.,   0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,   0., 0., 0., 0.,   0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,   0., 0., 0., 0.,   0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,   0., 0., 0., 0.,   0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 1.,   0., 0., 0., 2.,   0., 0., 0., 7.,
      0., 0., 0., 0., 0., 0., 0., 0.,   0., 0., 0., 0.,   0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,   0., 0., 0., 0.,   0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,   0., 0., 0., 0.,   0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 5.,   0., 0., 0., 6.,   0., 0., 0., 15.,
      0., 0., 0., 0., 0., 0., 0., 0.,   0., 0., 0., 0.,   0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,   0., 0., 0., 0.,   0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,   0., 0., 0., 0.,   0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 9.,   0., 0., 0., 10.,  0., 0., 0., 23.,
      0., 0., 0., 0., 0., 0., 0., 0.,   0., 0., 0., 0.,   0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,   0., 0., 0., 0.,   0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 30.,  0., 0., 0., 32.,  0., 0., 0., 70.,
      0., 0., 0., 0., 0., 0., 0., 0.,   0., 0., 0., 0.,   0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,   0., 0., 0., 0.,   0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,   0., 0., 0., 0.,   0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,   0., 0., 0., 0.,   0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,   0., 0., 0., 0.,   0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,   0., 0., 0., 0.,   0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 21.,  0., 0., 0., 22.,  0., 0., 0., 47.,
      0., 0., 0., 0., 0., 0., 0., 0.,   0., 0., 0., 0.,   0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,   0., 0., 0., 0.,   0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,   0., 0., 0., 0.,   0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 25.,  0., 0., 0., 26.,  0., 0., 0., 55.,
      0., 0., 0., 0., 0., 0., 0., 0.,   0., 0., 0., 0.,   0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,   0., 0., 0., 0.,   0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,   0., 0., 0., 0.,   0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 29.,  0., 0., 0., 30.,  0., 0., 0., 63.,
      0., 0., 0., 0., 0., 0., 0., 0.,   0., 0., 0., 0.,   0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,   0., 0., 0., 0.,   0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 70.,  0., 0., 0., 72.,  0., 0., 0., 150.,
      0., 0., 0., 0., 0., 0., 0., 0.,   0., 0., 0., 0.,   0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,   0., 0., 0., 0.,   0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,   0., 0., 0., 0.,   0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,   0., 0., 0., 0.,   0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,   0., 0., 0., 0.,   0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,   0., 0., 0., 0.,   0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 41.,  0., 0., 0., 42.,  0., 0., 0., 87.,
      0., 0., 0., 0., 0., 0., 0., 0.,   0., 0., 0., 0.,   0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,   0., 0., 0., 0.,   0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,   0., 0., 0., 0.,   0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 45.,  0., 0., 0., 46.,  0., 0., 0., 95.,
      0., 0., 0., 0., 0., 0., 0., 0.,   0., 0., 0., 0.,   0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,   0., 0., 0., 0.,   0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,   0., 0., 0., 0.,   0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 49.,  0., 0., 0., 50.,  0., 0., 0., 103.,
      0., 0., 0., 0., 0., 0., 0., 0.,   0., 0., 0., 0.,   0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0.,   0., 0., 0., 0.,   0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 110., 0., 0., 0., 112., 0., 0., 0., 230.};
  const std::array<int, 4> in_shape = {{3, 18, 16, 1}};
  const auto padding = PaddingMode::SAME;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, VALID3x18x16x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0.,
      0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0.,
      0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0.,
      0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0.,
      0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0.,
      0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0.,
      0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0.,
      0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0.,
      0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0.,
      0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0.,
      1., 0., 0.,  0., 2., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0.,
      0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0.,
      0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0.,
      0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 3., 0., 0.,  0.,
      4., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0.,
      0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0.,
      0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0.,
      0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0.,
      0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0.,
      0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0.,
      0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0.,
      0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0.,
      0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0.,
      0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0.,
      0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0.,
      0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0.,
      0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  5.,
      0., 0., 0.,  6., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0.,
      0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0.,
      0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0.,
      0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0.,  7., 0., 0., 0.,  8.,
      0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0.,
      0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0.,
      0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0.,
      0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0.,
      0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0.,
      0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0.,
      0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0.,
      0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0.,
      0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0.,
      0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0.,
      0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0.,
      0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0.,
      0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 9.,  0.,
      0., 0., 10., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0.,
      0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0.,
      0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0.,
      0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 11., 0., 0., 0., 12., 0.,
      0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0.,
      0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0.,
      0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0.};
  const std::array<int, 4> in_shape = {{3, 18, 16, 1}};
  const auto padding = PaddingMode::VALID;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, SAME3x18x16x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 1.,   2.,
      0., 0., 0., 0., 0., 0., 3.,   4.,   0., 0., 0., 0., 0., 0., 12.,  14.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 9.,   10.,
      0., 0., 0., 0., 0., 0., 11.,  12.,  0., 0., 0., 0., 0., 0., 28.,  30.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 17.,  18.,
      0., 0., 0., 0., 0., 0., 19.,  20.,  0., 0., 0., 0., 0., 0., 44.,  46.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 58.,  60.,
      0., 0., 0., 0., 0., 0., 62.,  64.,  0., 0., 0., 0., 0., 0., 136., 140.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 41.,  42.,
      0., 0., 0., 0., 0., 0., 43.,  44.,  0., 0., 0., 0., 0., 0., 92.,  94.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 49.,  50.,
      0., 0., 0., 0., 0., 0., 51.,  52.,  0., 0., 0., 0., 0., 0., 108., 110.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 57.,  58.,
      0., 0., 0., 0., 0., 0., 59.,  60.,  0., 0., 0., 0., 0., 0., 124., 126.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 138., 140.,
      0., 0., 0., 0., 0., 0., 142., 144., 0., 0., 0., 0., 0., 0., 296., 300.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 81.,  82.,
      0., 0., 0., 0., 0., 0., 83.,  84.,  0., 0., 0., 0., 0., 0., 172., 174.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 89.,  90.,
      0., 0., 0., 0., 0., 0., 91.,  92.,  0., 0., 0., 0., 0., 0., 188., 190.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 97.,  98.,
      0., 0., 0., 0., 0., 0., 99.,  100., 0., 0., 0., 0., 0., 0., 204., 206.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 0.,   0.,
      0., 0., 0., 0., 0., 0., 0.,   0.,   0., 0., 0., 0., 0., 0., 218., 220.,
      0., 0., 0., 0., 0., 0., 222., 224., 0., 0., 0., 0., 0., 0., 456., 460.};
  const std::array<int, 4> in_shape = {{3, 18, 16, 2}};
  const auto padding = PaddingMode::SAME;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, VALID3x18x16x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 1.,  2.,  0., 0., 0., 0., 0., 0., 3.,  4.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 5.,  6.,  0., 0., 0., 0., 0., 0., 7.,  8.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 9.,  10., 0., 0., 0., 0., 0., 0., 11., 12., 0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 13., 14., 0., 0., 0., 0., 0., 0., 15., 16., 0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 17., 18., 0., 0., 0., 0., 0., 0., 19., 20., 0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 21., 22., 0., 0., 0., 0., 0., 0., 23., 24., 0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.};
  const std::array<int, 4> in_shape = {{3, 18, 16, 2}};
  const auto padding = PaddingMode::VALID;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, SAME3x18x16x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.,   2.,   3.,   4.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 5.,   6.,   7.,   8.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 22.,  24.,  26.,  28.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 17.,  18.,  19.,  20.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 21.,  22.,  23.,  24.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 54.,  56.,  58.,  60.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 33.,  34.,  35.,  36.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 37.,  38.,  39.,  40.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 86.,  88.,  90.,  92.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 114., 116., 118., 120.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 122., 124., 126., 128.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 268., 272., 276., 280.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 81.,  82.,  83.,  84.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 85.,  86.,  87.,  88.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 182., 184., 186., 188.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 97.,  98.,  99.,  100.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 101., 102., 103., 104.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 214., 216., 218., 220.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 387., 390., 393., 396.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 399., 402., 405., 408.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 834., 840., 846., 852.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 161., 162., 163., 164.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 165., 166., 167., 168.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 342., 344., 346., 348.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 177., 178., 179., 180.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 181., 182., 183., 184.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 374., 376., 378., 380.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 193., 194., 195., 196.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 197., 198., 199., 200.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 406., 408., 410., 412.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,   0.,   0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 434., 436., 438., 440.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 442., 444., 446., 448.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 908., 912., 916., 920.};
  const std::array<int, 4> in_shape = {{3, 18, 16, 4}};
  const auto padding = PaddingMode::SAME;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, VALID3x18x16x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 1.,  2.,  3.,  4.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 5.,  6.,  7.,  8.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 9.,  10., 11., 12., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 13., 14., 15., 16., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 17., 18., 19., 20., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 21., 22., 23., 24., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 25., 26., 27., 28., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 29., 30., 31., 32., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 33., 34., 35., 36., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 37., 38., 39., 40., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 41., 42., 43., 44., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 45., 46., 47., 48., 0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 18, 16, 4}};
  const auto padding = PaddingMode::VALID;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, SAME3x18x18x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0.,  0.,  0.,   0.,   0.,  0.,   0.,  0.,   0.,   0., 0.,  0., 0.,   0.,
      0.,  0.,  0.,   0.,   0.,  0.,   0.,  0.,   0.,   0., 0.,  0., 0.,   0.,
      0.,  0.,  0.,   0.,   0.,  0.,   0.,  0.,   0.,   0., 0.,  0., 0.,   0.,
      0.,  0.,  0.,   0.,   0.,  0.,   0.,  0.,   0.,   0., 0.,  0., 0.,   0.,
      0.,  0.,  0.,   0.,   0.,  0.,   0.,  0.,   0.,   0., 0.,  0., 0.,   0.,
      0.,  0.,  0.,   0.,   0.,  0.,   0.,  0.,   0.,   0., 0.,  0., 0.,   0.,
      0.,  0.,  0.,   0.,   0.,  0.,   0.,  0.,   0.,   0., 0.,  0., 0.,   0.,
      0.,  0.,  0.,   0.,   0.,  0.,   0.,  0.,   0.,   0., 0.,  0., 0.,   0.,
      0.,  0.,  1.,   0.,   0.,  0.,   2.,  0.,   0.,   0., 3.,  0., 0.,   9.,
      0.,  0.,  0.,   0.,   0.,  0.,   0.,  0.,   0.,   0., 0.,  0., 0.,   0.,
      0.,  0.,  0.,   0.,   0.,  0.,   0.,  0.,   0.,   0., 0.,  0., 0.,   0.,
      0.,  0.,  0.,   0.,   0.,  0.,   0.,  0.,   0.,   0., 0.,  0., 0.,   0.,
      0.,  0.,  0.,   0.,   0.,  0.,   0.,  0.,   0.,   0., 0.,  0., 0.,   0.,
      0.,  0.,  0.,   0.,   6.,  0.,   0.,  0.,   7.,   0., 0.,  0., 8.,   0.,
      0.,  19., 0.,   0.,   0.,  0.,   0.,  0.,   0.,   0., 0.,  0., 0.,   0.,
      0.,  0.,  0.,   0.,   0.,  0.,   0.,  0.,   0.,   0., 0.,  0., 0.,   0.,
      0.,  0.,  0.,   0.,   0.,  0.,   0.,  0.,   0.,   0., 0.,  0., 0.,   0.,
      0.,  0.,  0.,   0.,   0.,  0.,   0.,  0.,   0.,   0., 0.,  0., 0.,   0.,
      0.,  0.,  0.,   0.,   0.,  0.,   11., 0.,   0.,   0., 12., 0., 0.,   0.,
      13., 0.,  0.,   29.,  0.,  0.,   0.,  0.,   0.,   0., 0.,  0., 0.,   0.,
      0.,  0.,  0.,   0.,   0.,  0.,   0.,  0.,   0.,   0., 0.,  0., 0.,   0.,
      0.,  0.,  0.,   0.,   0.,  0.,   0.,  0.,   0.,   0., 0.,  0., 0.,   0.,
      0.,  0.,  0.,   0.,   37., 0.,   0.,  0.,   39.,  0., 0.,  0., 41.,  0.,
      0.,  88., 0.,   0.,   0.,  0.,   0.,  0.,   0.,   0., 0.,  0., 0.,   0.,
      0.,  0.,  0.,   0.,   0.,  0.,   0.,  0.,   0.,   0., 0.,  0., 0.,   0.,
      0.,  0.,  0.,   0.,   0.,  0.,   0.,  0.,   0.,   0., 0.,  0., 0.,   0.,
      0.,  0.,  0.,   0.,   0.,  0.,   0.,  0.,   0.,   0., 0.,  0., 0.,   0.,
      0.,  0.,  0.,   0.,   0.,  0.,   0.,  0.,   0.,   0., 0.,  0., 0.,   0.,
      0.,  0.,  0.,   0.,   0.,  0.,   0.,  0.,   0.,   0., 0.,  0., 0.,   0.,
      0.,  0.,  0.,   0.,   0.,  0.,   0.,  0.,   0.,   0., 0.,  0., 0.,   0.,
      0.,  0.,  0.,   0.,   0.,  0.,   0.,  0.,   0.,   0., 0.,  0., 0.,   0.,
      0.,  0.,  0.,   0.,   26., 0.,   0.,  0.,   27.,  0., 0.,  0., 28.,  0.,
      0.,  59., 0.,   0.,   0.,  0.,   0.,  0.,   0.,   0., 0.,  0., 0.,   0.,
      0.,  0.,  0.,   0.,   0.,  0.,   0.,  0.,   0.,   0., 0.,  0., 0.,   0.,
      0.,  0.,  0.,   0.,   0.,  0.,   0.,  0.,   0.,   0., 0.,  0., 0.,   0.,
      0.,  0.,  0.,   0.,   0.,  0.,   0.,  0.,   0.,   0., 0.,  0., 0.,   0.,
      0.,  0.,  0.,   0.,   0.,  0.,   31., 0.,   0.,   0., 32., 0., 0.,   0.,
      33., 0.,  0.,   69.,  0.,  0.,   0.,  0.,   0.,   0., 0.,  0., 0.,   0.,
      0.,  0.,  0.,   0.,   0.,  0.,   0.,  0.,   0.,   0., 0.,  0., 0.,   0.,
      0.,  0.,  0.,   0.,   0.,  0.,   0.,  0.,   0.,   0., 0.,  0., 0.,   0.,
      0.,  0.,  0.,   0.,   0.,  0.,   0.,  0.,   0.,   0., 0.,  0., 0.,   0.,
      0.,  0.,  0.,   0.,   0.,  0.,   0.,  0.,   36.,  0., 0.,  0., 37.,  0.,
      0.,  0.,  38.,  0.,   0.,  79.,  0.,  0.,   0.,   0., 0.,  0., 0.,   0.,
      0.,  0.,  0.,   0.,   0.,  0.,   0.,  0.,   0.,   0., 0.,  0., 0.,   0.,
      0.,  0.,  0.,   0.,   0.,  0.,   0.,  0.,   0.,   0., 0.,  0., 0.,   0.,
      0.,  0.,  0.,   0.,   0.,  0.,   87., 0.,   0.,   0., 89., 0., 0.,   0.,
      91., 0.,  0.,   188., 0.,  0.,   0.,  0.,   0.,   0., 0.,  0., 0.,   0.,
      0.,  0.,  0.,   0.,   0.,  0.,   0.,  0.,   0.,   0., 0.,  0., 0.,   0.,
      0.,  0.,  0.,   0.,   0.,  0.,   0.,  0.,   0.,   0., 0.,  0., 0.,   0.,
      0.,  0.,  0.,   0.,   0.,  0.,   0.,  0.,   0.,   0., 0.,  0., 0.,   0.,
      0.,  0.,  0.,   0.,   0.,  0.,   0.,  0.,   0.,   0., 0.,  0., 0.,   0.,
      0.,  0.,  0.,   0.,   0.,  0.,   0.,  0.,   0.,   0., 0.,  0., 0.,   0.,
      0.,  0.,  0.,   0.,   0.,  0.,   0.,  0.,   0.,   0., 0.,  0., 0.,   0.,
      0.,  0.,  0.,   0.,   0.,  0.,   0.,  0.,   0.,   0., 0.,  0., 0.,   0.,
      0.,  0.,  0.,   0.,   0.,  0.,   51., 0.,   0.,   0., 52., 0., 0.,   0.,
      53., 0.,  0.,   109., 0.,  0.,   0.,  0.,   0.,   0., 0.,  0., 0.,   0.,
      0.,  0.,  0.,   0.,   0.,  0.,   0.,  0.,   0.,   0., 0.,  0., 0.,   0.,
      0.,  0.,  0.,   0.,   0.,  0.,   0.,  0.,   0.,   0., 0.,  0., 0.,   0.,
      0.,  0.,  0.,   0.,   0.,  0.,   0.,  0.,   0.,   0., 0.,  0., 0.,   0.,
      0.,  0.,  0.,   0.,   0.,  0.,   0.,  0.,   56.,  0., 0.,  0., 57.,  0.,
      0.,  0.,  58.,  0.,   0.,  119., 0.,  0.,   0.,   0., 0.,  0., 0.,   0.,
      0.,  0.,  0.,   0.,   0.,  0.,   0.,  0.,   0.,   0., 0.,  0., 0.,   0.,
      0.,  0.,  0.,   0.,   0.,  0.,   0.,  0.,   0.,   0., 0.,  0., 0.,   0.,
      0.,  0.,  0.,   0.,   0.,  0.,   0.,  0.,   0.,   0., 0.,  0., 0.,   0.,
      0.,  0.,  0.,   0.,   0.,  0.,   0.,  0.,   0.,   0., 61., 0., 0.,   0.,
      62., 0.,  0.,   0.,   63., 0.,   0.,  129., 0.,   0., 0.,  0., 0.,   0.,
      0.,  0.,  0.,   0.,   0.,  0.,   0.,  0.,   0.,   0., 0.,  0., 0.,   0.,
      0.,  0.,  0.,   0.,   0.,  0.,   0.,  0.,   0.,   0., 0.,  0., 0.,   0.,
      0.,  0.,  0.,   0.,   0.,  0.,   0.,  0.,   137., 0., 0.,  0., 139., 0.,
      0.,  0.,  141., 0.,   0.,  288.};
  const std::array<int, 4> in_shape = {{3, 18, 18, 1}};
  const auto padding = PaddingMode::SAME;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, VALID3x18x18x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.,  0., 0., 0., 2.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 3.,  0., 0., 0., 4.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 5.,  0., 0., 0., 6.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 7.,  0., 0., 0., 8.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 9.,  0., 0., 0., 10., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 11., 0., 0., 0., 12., 0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 18, 18, 1}};
  const auto padding = PaddingMode::VALID;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, SAME3x18x18x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      1.,   2.,   0., 0., 0.,   0.,   0., 0., 3.,   4.,   0.,   0.,
      0.,   0.,   0., 0., 5.,   6.,   0., 0., 0.,   0.,   16.,  18.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      11.,  12.,  0., 0., 0.,   0.,   0., 0., 13.,  14.,  0.,   0.,
      0.,   0.,   0., 0., 15.,  16.,  0., 0., 0.,   0.,   36.,  38.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      21.,  22.,  0., 0., 0.,   0.,   0., 0., 23.,  24.,  0.,   0.,
      0.,   0.,   0., 0., 25.,  26.,  0., 0., 0.,   0.,   56.,  58.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      72.,  74.,  0., 0., 0.,   0.,   0., 0., 76.,  78.,  0.,   0.,
      0.,   0.,   0., 0., 80.,  82.,  0., 0., 0.,   0.,   172., 176.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      51.,  52.,  0., 0., 0.,   0.,   0., 0., 53.,  54.,  0.,   0.,
      0.,   0.,   0., 0., 55.,  56.,  0., 0., 0.,   0.,   116., 118.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      61.,  62.,  0., 0., 0.,   0.,   0., 0., 63.,  64.,  0.,   0.,
      0.,   0.,   0., 0., 65.,  66.,  0., 0., 0.,   0.,   136., 138.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      71.,  72.,  0., 0., 0.,   0.,   0., 0., 73.,  74.,  0.,   0.,
      0.,   0.,   0., 0., 75.,  76.,  0., 0., 0.,   0.,   156., 158.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      172., 174., 0., 0., 0.,   0.,   0., 0., 176., 178., 0.,   0.,
      0.,   0.,   0., 0., 180., 182., 0., 0., 0.,   0.,   372., 376.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      101., 102., 0., 0., 0.,   0.,   0., 0., 103., 104., 0.,   0.,
      0.,   0.,   0., 0., 105., 106., 0., 0., 0.,   0.,   216., 218.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      111., 112., 0., 0., 0.,   0.,   0., 0., 113., 114., 0.,   0.,
      0.,   0.,   0., 0., 115., 116., 0., 0., 0.,   0.,   236., 238.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      121., 122., 0., 0., 0.,   0.,   0., 0., 123., 124., 0.,   0.,
      0.,   0.,   0., 0., 125., 126., 0., 0., 0.,   0.,   256., 258.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0.,   0.,
      272., 274., 0., 0., 0.,   0.,   0., 0., 276., 278., 0.,   0.,
      0.,   0.,   0., 0., 280., 282., 0., 0., 0.,   0.,   572., 576.};
  const std::array<int, 4> in_shape = {{3, 18, 18, 2}};
  const auto padding = PaddingMode::SAME;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, VALID3x18x18x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 1.,  2.,  0., 0.,
      0., 0., 0., 0., 3.,  4.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 5.,  6.,  0., 0.,
      0., 0., 0., 0., 7.,  8.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 9.,  10., 0., 0., 0., 0., 0., 0., 11., 12., 0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 13., 14., 0., 0., 0., 0., 0., 0., 15., 16., 0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 17., 18., 0., 0.,
      0., 0., 0., 0., 19., 20., 0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 21., 22., 0., 0.,
      0., 0., 0., 0., 23., 24., 0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0.,
      0., 0., 0., 0., 0.,  0.,  0., 0.};
  const std::array<int, 4> in_shape = {{3, 18, 18, 2}};
  const auto padding = PaddingMode::VALID;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, SAME3x18x18x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   1.,   2.,   3.,   4.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   5.,
      6.,   7.,    8.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    9.,   10.,  11.,  12.,  0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   30.,  32.,  34.,  36.,  0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   21.,  22.,  23.,  24.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   25.,   26.,   27.,   28.,  0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   29.,  30.,  31.,  32.,  0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   70.,  72.,  74.,  76.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   41.,  42.,
      43.,  44.,   0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    45.,   46.,  47.,  48.,  0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   49.,  50.,  51.,
      52.,  0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   110., 112.,
      114., 116.,  0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   142., 144., 146., 148., 0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   150.,
      152., 154.,  156.,  0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    158., 160., 162., 164., 0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   340., 344., 348., 352., 0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    101.,  102., 103., 104., 0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   105., 106., 107.,
      108., 0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    109.,  110.,  111., 112., 0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    230.,  232., 234., 236., 0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   930.,
      936., 942.,  948.,  0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   423., 426., 429., 432., 882., 888.,
      894., 900.,  0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    181.,  182., 183., 184., 0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   185., 186., 187.,
      188., 0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    189.,  190.,  191., 192., 0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    390.,  392., 394., 396., 0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   201.,  202.,  203.,  204., 0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   205., 206., 207., 208., 0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      209., 210.,  211.,  212.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   430.,  432.,  434.,  436., 0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    221.,  222., 223., 224., 0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   225., 226., 227.,
      228., 0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    229.,  230.,  231., 232., 0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    470.,  472., 474., 476., 0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   241., 242., 243., 244., 0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   245.,
      246., 247.,  248.,  0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    249., 250., 251., 252., 0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   510., 512., 514., 516., 0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   542.,  544.,  546.,  548., 0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,   0.,   550., 552., 554., 556., 0.,
      0.,   0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,
      558., 560.,  562.,  564.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   1140., 1144., 1148., 1152.};
  const std::array<int, 4> in_shape = {{3, 18, 18, 4}};
  const auto padding = PaddingMode::SAME;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
TYPED_TEST(MaxWindow11Stride4Grad, VALID3x18x18x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 1.,  2.,  3.,  4.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 5.,  6.,  7.,  8.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 9.,  10., 11., 12., 0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 13., 14., 15., 16., 0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  92., 96., 100., 104.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 33., 34., 35., 36., 0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 37., 38., 39., 40., 0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 41., 42., 43., 44., 0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 45., 46., 47., 48., 0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,
      0., 0., 0., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.};
  const std::array<int, 4> in_shape = {{3, 18, 18, 4}};
  const auto padding = PaddingMode::VALID;
  const auto params = getPoolingParams<11, 4>(in_shape, padding);
  const DataType max_input_val = 2048.0;
  this->test_pool(exp_out, params, max_input_val);
}
